369
Cerinţa
Se dă un șir cu n numere naturale. Determinați câte dintre ele sunt prime și au suma cifrelor un număr prim.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale.
Date de ieşire
Programul afișează pe ecran numărul C, reprezentând rezultatul cerut.
Restricţii şi precizări
1 ≤ n ≤ 1000- cele
nnumere citite vor fi mai mici decât1.000.000.000
Exemplu
Intrare
6 83 36 53 401 90 7
Ieșire
3
Explicație
Dintre cele 6 numere citite sunt prime : 83 53 401 7. Dintre ele 83 401 7 su suma cifrelor număr prim, respectiv 11 5 7. În consecință, sunt 3 numere care respectă regula.
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, cnt = 0;
cin >> n;
for(int i = 1; i <= n; ++i){
int x, sumcif=0;
cin >> x;
int cx = x;
while(x){
sumcif += x % 10;
x /= 10;
}
x = cx;
int cn = 1, d = 2;
while(x > 1){
int p = 0;
while(x % d == 0)
x/=d, p++;
cn = cn * (p + 1);
d++;
if(d * d > x)
d = x;
}
if(cn == 2){
d = 2;
cn = 1;
while(sumcif > 1){
int p = 0;
while(sumcif % d == 0)
sumcif/=d, p++;
cn = cn * (p + 1);
d++;
if(d * d > sumcif)
d = sumcif;
}
if(cn == 2)
cnt++;
}
}
cout << cnt;
return 0;
}
Comentarii