初学试了好久 不知道哪里出错了
{
int num[20];
int sum=0;
for(int i=0;i<=20;i++)
{
cin>>num[i];
for(int j=2;j<num[i]/2;j++)
{
if(num[i]%j==0)
break;
else
{
sum+=num[i];
}
}
for(int i=2;iif(sum%i==0)
cout<<"no"<else
{
cout<<"yes"<return 0;
}
求和不应该放在else里。代码如下,望采纳,谢谢!
int main()
{
int num[20];
int sum=0;
for(int i=0;i<20;i++)
{
cin>>num[i];
int x = 0;
for(int j=2;j<num[i];j++)
{
if(num[i]%j==0)
x = 1;
}
if (x == 0) {
sum += num[i];
}
}
int x = 0;
for(int i=2;i<sum;i++)
{
if(sum%i==0)
x = 1;
}
if(x == 1){
cout<<"no"<<endl;
} else {
cout<<"yes"<<endl;
}
return 0;
}
望采纳。修改后的代码如下:
#include <iostream>
#include <cmath>
using namespace std;
// 判断一个数是否为素数
bool is_prime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
int main() {
int num[20];
int sum = 0;
// 输入20个数,找出素数并求和
for (int i = 0; i < 20; i++) {
cin >> num[i];
if (is_prime(num[i])) {
sum += num[i];
}
}
// 判断求和后的结果是否为素数
if (is_prime(sum)) {
cout << "yes" << endl;
} else {
cout << "no" << endl;
}
return 0;
}