描述
对于给定的一个正整数序列,求它包含的所有素数的和。
输入
输入的第一行是一个整数n,在区间[1,10000]之中。后面紧跟n行,每一行是一个整数,在区间[1,100]之中。
输出
对输入的n个正整数中所有的素数求和,并把和在一行中输出。
样例输入
5
8
2
3
7
10
样例输出
12
= =。隔了太久,几近不会求素数,果然自己太弱了。
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n,sum=0,i,flag,a;
cin>>n;
while (n--){
cin>>a;
flag=1;
if (a==1) //1既不是素数也不是和数啦= =,不要把1加上去。
flag=0;
else { //sqrt()参数是float或者double,不能是int...
for (i=2;i<=sqrt((double)a);i++) //这里是小于等于,木有等于会错的。例如 4
if (a%i==0){
flag=0;
break;
}
}
if (flag)
sum+=a;
}
cout<<sum<<endl;
return 0;
}