描述
現在給你N個數(0<N<1000),現在要求你寫出一個程序,找出這N個數中的所有素數,並求和。
輸入
第一行給出整數M(0<M<10)代表多少組測試數據
每組測試數據第一行給你N,代表該組測試數據的數量。
接下來的N個數為要測試的數據,每個數小於1000
輸出
每組測試數據結果占一行,輸出給出的測試數據的所有素數和
代碼:
#include
using namespace std;
int main()
{
int M;
int flag=1;
cin>>M;
while(M--){
int N,i;
int sum=0;
cin>>N;
while(N--){
cin>>i;
for(unsigned cnt=2;cnt<i/2+1;cnt++){
if(i%cnt==0){
flag=0;
break;
}
}
if(!flag==0){
sum+=i;
flag=1;
}
}
cout<<sum<<endl;
}
system("Pause");
return 0;
}
N代表有多少組測試數據;M代表每組有多少個數據;i代表具體數據
接下來是我遇到的問題:
當我輸入的都是素數時能正確求出素數和,但是如果中間有一個合數,那麼這個合數後面的素數就沒有算進去了,不知道為什麼。
麻煩大家幫我找一下原因。
每次for循環前,flag都要初始化成1,否則上次的判斷會影響到下次