//求m,n之间的素数个数和这些素数的和
#include <stdio.h>
#include <stdbool.h>
int nums(int x)
{
int i = 2;
if(x ==1 )
{
return 0;
}
while( i<x )
{
if(x%i == 0)
{
return 0;
}
i++;
}
return 1;
}
int main()
{
int m,n;
int j;
scanf("%d %d", &m, &n);
int count = 0;
int sum = 0;
for(j=m; j<=n; j++)
{
if(nums(j) == 1)
{
count++;
sum += j;
}
}
printf("%d %d", count, sum);
return 0;
}
上面这种输入 10 31后 会输出 7 143
改动主函数中for循环的条件变成下面这样
//求m,n之间的素数个数和这些素数的和
#include <stdio.h>
#include <stdbool.h>
int nums(int x)
{
int i = 2;
if(x ==1 )
{
return 0;
}
while( i<x )
{
if(x%i == 0)
{
return 0;
}
i++;
}
return 1;
}
int main()
{
int m,n;
int j;
scanf("%d %d", &m, &n);
int count = 0;
int sum = 0;
for(;m<=j && j<=n; j++)
{
if(nums(j) == 1)
{
count++;
sum += j;
}
}
printf("%d %d", count, sum);
return 0;
}
其他都没有变,除了把for(j=m; j<=n; j++)改成了for(;m<=j && j<=n; j++)
还是输入10 31,为什么输出0 0?