http://acm.hdu.edu.cn/showproblem.php?pid=5151
直接判断是不是素数,然后再注意1就行。
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 6 int n; 7 int a[1001]; 8 bool f[1001]; 9 10 void Get_prime() 11 { 12 f[1]=true; 13 for(int i=2; i<=1000; i++) 14 { 15 if(!f[i]) 16 { 17 for(int j=i*i; j<=1000; j+=i) 18 { 19 f[j]=true; 20 } 21 } 22 } 23 } 24 25 int main() 26 { 27 Get_prime(); 28 while(scanf("%d",&n)!=EOF) 29 { 30 memset(a,0,sizeof(a)); 31 int ans=0; 32 for(int i=0; i<n; i++) 33 { 34 scanf("%d",&a[i]); 35 if(a[i]==1) ans+=a[i]; 36 else 37 { 38 if(!f[a[i]]) 39 { 40 ans+=a[i]; 41 } 42 } 43 } 44 printf("%d ",ans); 45 } 46 return 0; 47 }