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;
}


Răspuns :

#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;}
Ti-am facut aici un screen la problema!
Vezi imaginea ADITIPA