online: 7; azi: 920; total: 52926 Manual clasa a ix a - Algoritmi - Algoritmi de testare daca un numar natural este prim

Manual clasa a IX a

Algoritmi

Algoritmi de testare daca un numar natural este prim

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 s unt 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 ).
# 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.