#include
#include
int main()
{
int n,i,k,isPrime,count=0;
unsigned int a,b;
scanf("%d,%d",&a,&b);
for (n=a;n<=b;n=n+2)
{
isPrime=1;
k=sqrt(n);
for (i=2;i<=k;i++)
{
if (n%i==0)
{
isPrime=0;
break;
}
if (isPrime) count++;
}
}
printf("count=%d\n",count);
return 0;
}
不知道哪里错了 count 结果一直为0
if ( isPrime ) count ++; 放到for(i=2;i<=k;i++)循环外面
有帮助的话采纳一下哦!
修改处见注释,供参考:
#include <stdio.h>
#include <math.h>
int main()
{
int n, i, k, isPrime, count = 0;
unsigned int a, b;
scanf("%d,%d", &a, &b);
for (n = a; n <= b; n++) //(n = a; n <= b; n = n + 2) 修改
{
isPrime = 1;
if (n <= 1) continue;//排除 1 修改
k = sqrt(n);
for (i = 2; i <= k; i++)
{
if (n % i == 0)
{
isPrime = 0;
break;
}
} //} 移动到这里
if (isPrime) count++;
//} 这里修改位置
}
printf("count=%d\n", count);
return 0;
}