/*
请输入计算次数 : 2
请输入数值范围 1 -- 500(逗号隔开) :200,300
Count = 16, sum = 4048
请输入数值范围 1 -- 500(逗号隔开) :100,200
Count = 21, sum = 3167
Press any key to continue
*/
#include
#include
int prime(int n) {
int i;
if(n == 1) return 0;
for(i = 2;i * i <= n;i++) {
if(n%i == 0) return 0;
}
return 1;
}
int main(void) {
int count, i, m, n, sum;
int repeat, ri;
printf("请输入计算次数 : ");
scanf("%d", &repeat);
for(ri = 0; ri < repeat; ri++) {
printf("请输入数值范围 1 -- 500(逗号隔开) :");
scanf("%d,%d",&m,&n);
sum = 0;
count = 0;
for(i = m;i <= n;i++) {
if(prime(i) != 0) {
sum = sum + i;
count++;
}
}
printf("Count = %d, sum = %d\n", count, sum);
}
return 0;
}
int prime(int i)
{int j;
if(i==1)
return 0;
for(j=2;j<=i;j++)
{if(i%j==0)
{return 0;}}
return 1;}
因为对于任何数i,i%i总是等于0的。循环的终止条件应该是j
#include
#include
int main(void)
{
int count, i, m, n, sum;
int repeat, ri;
int prime(int i);
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++)
{
scanf("%d,%d", &m, &n);
sum=0;
count=0;
for(i=m;i<=n;i++)
{if(prime(i)==1)
{sum=sum+i;
count++;}
}
printf("Count = %d, sum = %d\n", count, sum);
}
}
int prime(int i)
{int j;
if(i==1) return 0;
for(j=2;j {if(i%j==0) return 0;}
return 1;}
这是我改的源代码,虽然晚了一点。。。
函数int prime(int i)
{int j;
if(i==1)
return 0;
for(j=2;j<=i;j++)
{if(i%j==0)
{return 0;}}
return 1;}
写错了; j