C语言!不知道哪里错了?求100以内的全部素数,每行输出10个.素数是只能被1和自身整除的正整数,1不是素数,

#include<stdio.h>
int main()
{
int i,m,n,c;
printf("一百以内的全部素数:\n");
c=0;
m=0;
for(n=2;n<=100;n++){
m++;
for(i=2;i<=m/2;i++){

if(m%i==0)
break;
if(i>m/2&&m!=1)
{ printf("%d",m);
c++;
if(c%10==0)
printf("\n"); }
}

}

}

你的括号写错位置了,调整格式跟修改后的代码如下:

#include<stdio.h>
int main()
{
    int i,m,n,c;
    printf("一百以内的全部素数:\n");
    c=0;
    m=0;
    for(n=2; n<=100; n++)
    {
        m++;
        for(i=2; i<=m/2; i++)
        {
            if(m%i==0)
                break;
        }
        if(i>m/2 && m!=1)
        {
            printf("%d ", m);
            c++;
            if(c%10==0)
                printf("\n");
        }
    }
}

追问

为什么括号的位置要这样放?

追答

因为你判断素数的时候是在2与这个数的一半的区间里面找,只要有一个不符合或者过了这个数的一半的时候,就会跳出这个循环,这时候判断跳出循环时是哪一个数终止了循环,如果是2到这个数的一半的区间中的数终止了循环,则说明,这个数不是素数,如果是自然结束循环,则i肯定大于这个数的一半,所以判断条件应该放在内层循环的后面,而不是放在内层循环的里面。

温馨提示:答案为网友推荐,仅供参考
相似回答