#include <stdio.h> #include <math.h> int main() { int m,n,x,y,sum=0; while(scanf("%d",&m)!=EOF){ if(m>0){ if(m==2){ sum+=m; continue; } x=1; n=sqrt(m); for(int n1=2;n1<=n+1;n1++){ if(m%n1==0){ x=0; break; } } if(x==1){ sum+=m; continue; } } if(m<=0){ printf("%d\n",sum); sum=0; continue; } } return 0; }为什么无法解决下面的问题:题目描述 求素数的和。 输入 输入文件有很多行,每行包含一些正整数(零或负数表示结束),要求统计其中的素数的和。 输出 每行输出一个和。 样例输入 复制 2 3 4 5 10 0 4 2 5 14 6 7 -3 样例输出 复制 10 14
时间: 2024-01-23 08:02:09 浏览: 77
C语言经典100例
这段代码无法解决上述问题的原因在于,它只能读入一个正整数后判断是否为素数,并累加素数的和。而题目要求输入文件有很多行,每行包含一些正整数(零或负数表示结束),要求统计其中的素数的和。因此,需要对代码进行修改。
可以使用嵌套循环,外层循环读入每一行的数据,内层循环对每个数进行素数判断和累加。同时,需要注意在读入零或负数时输出累加的素数和并清零。下面是修改后的代码:
阅读全文