#include<stdio.h>
#include<math.h>
int main(){
int n, count, sum;
printf("Enter upper bound n \n");
scanf("%d", &n);
for(int a = 1; a <= n; a++){
count =0;
sum = 0;
for(int i = 2; i <= sqrt(a); ++i){
if(a%i == 0){
count++;
break;
}
}
if(count== 0 && a!=1){
sum = a + sum;
}
}
printf("%d", sum);
}
该程序是我尝试打印素数 请帮助我。
如注释中所述,您应该在第一次循环前初始化sum,例如
int n, count, sum=0;
或者您可以在循环中初始化sum,如
for(a=1,sum=0;a <= n; a++)
并删除sum = 0;在第一个循环中,因为每次执行第一个循环时,总和都会变为0。您可以通过在代码中插入以下行来检查此问题
printf("Before sum %d",sum);
sum = 0;
printf("After Sum %d",sum);
请确保如果要在循环中初始化求和,请在循环的外部定义“ a”(如果未将和转到局部变量,并且它会隐藏外部和)。