问答详情
源自:4-14 结束语句之break语句

请帮我找出错误,运行之后没有输出

输出1-50所有的素数

#include <stdio.h>
int main()
{
    int m,n;
    for(m=2;m<=50;m++)
    {
        n=2;
        while(n>=2 && n<50)
        {
            if (m%n == 0)
                break;
        }
        n++;
    }
    if(m == n)
    {
        printf("%d ",m);
    }
    
    
    return 0;
    
}



提问者:慕无忌1305470 2016-07-21 16:35

个回答

  • 我改名字了
    2016-08-14 20:31:43

    while(n>=2 && n<50)判断错了。

    n++;位置错了。

     for(m=2;m<=50;m++)

    {

    }大括号位置错了。

     if (m%n == 0)   if后虽然可以有空格,不过本题通过不了。

    解释:

    大括号错了你可以理解为

    if(m == n)
        {
            printf("%d ",m);
        }

    的位置错了。

    n>=2 && 一定通过,因为每次循环n都重新被赋初值。无意义。

    n<50  按你的思路应该是51,就算能通过,无意义的运算过多。

    n++不在while循环内。

    {  }  大括号, if(m == n)判断应该在for循环内。


  • 我改名字了
    2016-08-14 20:01:55

    #include<stdio.h>

    int main()

    {

        int x,y,m,n;

        for(x=2;x<=50;x++)

        {

            for(y=2;y<x;y++)

            {

                if(x%y==0)

                {

                    break;          

                }

            }

            if(x==y)

            {

                printf("%d\t",x);

            }

        }

        printf("\n\n\n");

        for(m=2;m<=50;m++)

        {

            n=2;

            while(n<m)

            {

                if(m%n == 0)

                {

                    break;

                }

                n++;

            }

            if(m==n)

            {

                printf("%d\t",m);

            }

        }

        

        return 0;

        

    }


  • Niuuuuuuuu
    2016-07-21 17:01:02

    没错啊  应该是网站的编译器的问题