Informatică, întrebare adresată de Corehowl, 9 ani în urmă

Problema de C++

Scrieti un program care citeste de la tastatura un numar natural n , apoi n numere naturale de cel mult noua cifre, si afiseaza pe ecran cate dintre aceste numere au proprietatea ca suma cifrelor lor este un numar prim.

As dori sa va intreb , la ce am gresit:

#include

using namespace std;

int main()
{
int v[100] , n , i , g , cif = 0 , val = 0 , sum = 0 , contor = 0;
cin >> n;
for (i = 0 ; i < n ; i++) {
cin >> v[i];
sum = 0;
while (v[i] != 0){
cif = v[i] % 10;
sum = sum + cif;
v[i] = v[i] / 10;
}
for ( g = 1 ; g <= sum ; g++){
if (sum % g == 0) contor++;
}
if (contor == 2) val++;
}
cout << val;
return 0;
}


YeppX: Doua cifre sau noua cifre?
Corehowl: 9 cifre
Robin0317: poti da un exemplu ?
Corehowl: Ex: Pentru n = 8 si numerele (12,13,20,51,60,122,128,117), programul va afisa valoarea 3 (reprezentand numarul valorilor care indeplinesc valoarea ceruta).
aditipa: Pe exemplul tau se va afisa 4, nu 3!
Corehowl: Si care ti se pare ca ar trebui sa fie al 4-lea? Pentru din cate presupun ca stii, un numar prim e un numar care se imparte la 1 si la el insusi.
Corehowl: Ignora ce am spus
Corehowl: Acum am vazut 20-ul

Răspunsuri la întrebare

Răspuns de Robin0317
0
#include<iostream>using namespace std;int prim(int s){    int d=0,c=0;    if(s%2==0) c++;    for(d=3;d<=s/2;d++)        if(s%d==0) c++;    if(c==0) return 1;    else return 0;}int main(){int v[1000],n,i,s=0,k=0;cin>>n;for(i=1;i<=n;i++)    cin>>v[i];for(i=1;i<=n;i++){ s=0;auz=v[i];    while(v[i])    {        s=s+v[i]%10;        v[i]=v[i]/10;    }    if(prim(s)==1) k++; } cout<<k;return 0;}
Răspuns de aditipa
2
Ti-am facut aici un screen la problema!
Anexe:

Corehowl: Aparent tot ce trebuia sa mai adaug la codul meu , o fost un contor = 0 exact dupa acel sum = 0 la inceputul for-ului.
aditipa: Exact!
Alte întrebări interesante