c语言新手问题,请帮忙看下这段代码哪里出了问题,谢谢;

2025-12-15 08:54:27
推荐回答(1个)
回答1:

#include 

int main()
{  

int sum = 0;//记录要输出的数字; 
int prime = 0; //记录素数的个数 
int start;
int end;
int digital = 1;           //错误1 这里的digital=1才对,因为如果是0 的话,你判断素数的逻辑会认为1也是素数,这样就错了
int isprime ;                //错误2,这个要在do while循环里面设置为1

scanf("%d %d", &start, &end);
do
{
isprime = 1;                     //错误3,isprime=1要在这里设置
digital++;  //引入数字;   
for (int i = 2; i {
if (digital%i == 0)
{
isprime = 0;
break;
}
}
if (isprime == 1) //如果是素数的话 
{
prime++; //记录下是第几个素数  
if (prime >= start&&prime<=end)              //错误4,prime要<=end少了等号
{
sum += digital;//把这个数字加到结果上; 
}
else if (prime > end)//判断是否循环完成           //错误5,只有当prime大于end的时候才跳出循环
{
printf("%d", sum);//出口; 
goto out; //退出循环; 
}
}

} while (prime <= end);

out:

return 0;
}