12行应该是for(k=2;k<i;k++),不是x-1啊
这个循环是判断i是否为素数,和x没啥关系啊
单独设一个判断函数,代码比较简洁:
#include<stdio.h>
int isprime(int n)
{
if(n<4) return n>1;
for(int i=2;i*i<=n;i++)
if(n%i==0) return 0;
return 1;
}
int main()
{
int x,i,count=0;
scanf("%d",&x);
for (i=0;i<=x;i++){
if (isprime(i)){
count++;
}
}
printf("%d",count);
return 0;
}