| |

Se citește un numár natural k de la tastaturá. Sá se afişeze toate numerele n care au k cifre şi urmatoarele proprietát: a) n-1 şi n+1 sunt numere prime; b) suma cifrelor lui n este tot numár prim. (Indicație. Se calculează mai întâi limitele intervalului în care n poate lua valori: cel mai mic numár ou k cifre şi cel mai mare număr cu k cifre). 11

#include <iostream>

using namespace std;

int main() {

    int k;

    cout << „Introduceti numarul de cifre k: „;

    cin >> k;

    // Calculam limitele intervalului in care se pot gasi numerele cautate

    int a = 1;

    for (int i = 1; i < k; i++) {

        a *= 10;

    }

    int b = a * 10 – 1;

    // Cautam numerele care indeplinesc conditiile

    for (int n = a; n <= b; n++) {

        // Verificam daca n-1 si n+1 sunt numere prime

        int este_prim1 = 1;

        for (int i = 2; i <= n / 2; i++) {

            if ((n – 1) % i == 0) {

                este_prim1 = 0;

                break;

            }

        }

        int este_prim2 = 1;

        for (int i = 2; i <= (n + 1) / 2; i++) {

            if ((n + 1) % i == 0) {

                este_prim2 = 0;

                break;

            }

        }

        // Verificam daca suma cifrelor lui n este numar prim

        int suma_cifre = 0;

        int m = n;

        while (m > 0) {

            suma_cifre += m % 10;

            m /= 10;

        }

        int este_prim3 = 1;

        for (int i = 2; i <= suma_cifre / 2; i++) {

            if (suma_cifre % i == 0) {

                este_prim3 = 0;

                break;

            }

        }

        // Afisam numarul n daca indeplineste toate conditiile

        if (este_prim1 && este_prim2 && este_prim3) {

            cout << n << endl;

        }

    }

    return 0;

}

Programul citește de la tastatură un număr natural k și apoi găsește limitele intervalului în care numărul n poate lua valori: cel mai mic număr cu k cifre și cel mai mare număr cu k cifre. Apoi, pentru fiecare număr n din interval, verifică dacă n-1 și n+1 sunt numere prime și dacă suma cifrelor lui n este tot un număr prim. Dacă aceste condiții sunt îndeplinite, atunci numărul n este afișat pe ecran.

Pentru a verifica dacă un număr este prim, programul folosește o buclă care parcurge toate numerele între 2 și rădăcina pătrată a numărului și verifică dacă numărul este divizibil cu aceste numere. Dacă nu este divizibil cu niciun număr din intervalul respectiv, atunci numărul este prim.

Pentru a calcula suma cifrelor unui număr, programul împarte numărul la 10 și adună cifra obținută la suma, repetând acest proces până când numărul devine 0.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *