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

代码工坊 课程设计 1
#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条回复 我来回复
  • 毕设海岸
    这个人很懒,什么都没有留下~
    评论
    1. scanf的变量i前面少了取址符,虽然不会出现CE,但是输入错误的传入了别的内存地址,楼上的都给出了正确答案 scanf("%d", &i);
    2. 你这个算法是最最最基础的求素数思路,而且还没有去掉开方数到它本身那一段没用的数,算法效率太低,OJ系统上很容易出现TLE错误
    3. 推荐你百度一下筛选法求素数,思路很简单,但是算法效率提高了不少.素数问题在ACM和算法中利用比较广泛,推荐研究透
    0条评论

发表回复

登录后才能评论