求解:编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数。

#include
#include
#include

int main(void)
{
int i;
while(scanf("%d",i))
{
for(int j=1;j<=i;j++)
{
for(int k=1;k<j;k++)
{
if(j%k==0)
continue;
else
goto line;
}
line: printf("there are %d",j);
}
}
return 0;
}

为什么程序会显示DEBUG ERROR?

  1. scanf的变量i前面少了取址符,虽然不会出现CE,但是输入错误的传入了别的内存地址,楼上的都给出了正确答案 scanf("%d", &i);
  2. 你这个算法是最最最基础的求素数思路,而且还没有去掉开方数到它本身那一段没用的数,算法效率太低,OJ系统上很容易出现TLE错误
  3. 推荐你百度一下筛选法求素数,思路很简单,但是算法效率提高了不少.素数问题在ACM和算法中利用比较广泛,推荐研究透

scanf要用变量地址
scanf("%d", &i);

scanf("%d", &i);

scanf("%d",i)i前面加个&吧,地址