任意输入20个正整数,找出其中的素数,并将这些素数相加得到总sum。要求:编程判断该sum是否依然为素数,是则输出yes,不是则输出no

初学试了好久 不知道哪里出错了

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

img

img

望采纳。修改后的代码如下:

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