Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

พิมพ์จำนวนเฉพาะในอาร์เรย์ที่ผลรวมหลักเป็นจำนวนเฉพาะ

ได้รับอาร์เรย์ ต้องพิมพ์ตัวเลขที่เป็นจำนวนเฉพาะ และผลรวมของหลักตัวเลขก็เป็นจำนวนเฉพาะด้วย ถ้าไม่มี ให้คืน -1

Input: arr[] = {2, 4, 3, 19, 25, 6, 11, 12, 18, 7}
Output: 2, 3, 25, 11, 12, 7

คำอธิบาย: 2, 3, 7 เป็นจำนวนเฉพาะ แต่ 25 (2+5=7), 11 (1+1=2), 12 (1+2=3) ผลรวมหลักก็เป็นจำนวนเฉพาะเช่นกัน ส่วน 19 (1+9=10) ไม่ใช่จำนวนเฉพาะ

อัลกอริทึม

START
Step 1 -> Take array of int with values
Step 2 -> declare start variables as i, m, flag, flag1, sum, r, d, j, tem
Step 3 -> store size of array in m
Step 4 -> Loop For i=0 and i

ตัวอย่างโค้ด (C++)

#include <iostream>
using namespace std;

int main() {
    int arr[] = {2, 4, 3, 19, 25, 6, 11, 12, 18, 7};
    int i, m, flag, flag1, sum, r, d, j, tem;
    m = sizeof(arr)/sizeof(arr[0]);
    for (i = 0; i < m; i++) {
        flag = flag1 = sum = 0;
        d = int(arr[i]/2);
        for (j = 2; j <= d; j++) {
            if (arr[i] % j == 0) {
                flag = 1;
                break;
            }
        }
        if (flag == 0) {
            tem = arr[i];
            while (tem) {
                r = tem % 10;
                sum = sum + r;
                tem = tem / 10;
            }
            d = int(sum/2);
            for (j = 2; j <= d; j++) {
                if (sum % j == 0) {
                    flag1 = 1;
                    break;
                }
            }
            if (flag1 == 0) {
                cout << arr[i] << " ";
            }
        }
    }
}

ผลลัพธ์

2 3 11 25 12 7