关于C语言 这题折磨我两天,疯了 问题应该是循环没进去今天遇到相似问题希望根除

#include<stdio.h>
int main()
{
int i,n;
for(i=2;i<=100;i++)
{
for(n=2;n<=2/i;n++)
if(i%n!=0)
{
printf("%d\t",i);
break;
}
}
return 0;
}

再来回答一下吧,你这样求100以内的素数是有问题的。首先是第2个for循环你是满足不了条件的,即不能执行里面的语句。其次就是就算你能进去第2个for循环语句,也不能由那个if条件判断i是素数,因为就算不是素数也会有不能被整除的数的。

2/i要干啥啊?是i/2吧

逻辑有错误,代码修改如下:

#include<stdio.h>
int main()
{
    int i,n;
    for(i=2;i<=100;i++)
    {
        for(n=2;n<i;n++)
        {
            if(i%n==0)
                break;
        }
        if(n == i)
            printf("%d\t",i);
    }
    return 0;
}

for(n=2;n<=2/i;n++)
i 大于2,2/i等于零。这个循环就进不去。