注册 登录
编程论坛 C语言论坛

新手上路理解不了思路,求大佬详细解析谢谢

陈锦鹏 发布于 2019-11-09 10:30, 1601 次点击
int m, n;
    for(m=2; m<=50; m++)
    {
        for(n=2; n<m; n++)3/2
        {
            if(m%n==0)      
             break;                 
        }   
        if(m == n)   
            printf("%d  ", m);
    }
5 回复
#2
纯蓝之刃2019-11-09 13:44
你这个是输出50以内的质数的程序。
        for(n=2; n<m; n++)
        {
            if(m%n==0)
             break;
        }

判断m是不是质数,if(m%n==0)判断m除以n取余为0,说明n是m的因数。如果m%n==0,则跳出循环。
if(m == n)判断m和n是否相等,如果相等,则m的除了1以外的最小因数为其本身,说明m是质数,printf("%d  ", m);输出m的值。
for(m=2; m<=50; m++)
依次判断m从2到50之间的数是否为质数。
这个函数应该这样写
程序代码:
#include<stdio.h>

int main()
{
    int m, n;
    for(m=2; m<=50; m++)
    {
        for(n=2; n<m; n++)
        {
            if(m%n==0)
             break;
        }
        if(m == n)
            printf("%d  ", m);
    }
    return 0;
}
#3
陈锦鹏2019-11-09 14:54
回复 2楼 纯蓝之刃
能解释一下第一次循环的答案吗我理解不了谢谢啦
#4
陈锦鹏2019-11-09 15:03
回复 2楼 纯蓝之刃
if(m == n)这边理解不了呀
#5
纯蓝之刃2019-11-09 15:11
回复 3楼 陈锦鹏
当m=3时,m依次与n=2比较,看n是否是m的因数,当m=3,n=2时,if(m%n==0)不成立,n++导致n=3,退出for(n=2; n<m; n++)循环,if(m == n)成立,输出m=3.
当m=4时,m依次与n=2,3比较,看n是否是m的因数。如果if(m%n==0)成立,n是m的因数,m不是质数,也就是当m=4,n=2时,跳出for(n=2; n<m; n++)循环,m加一,进行下一次循环比较。
当m=5时,m依次与n=2,3,4比较
当m=6时,m依次与n=2,3,4,6比较.。。。。。
#6
陈锦鹏2019-11-12 22:47
回复 5楼 纯蓝之刃
if(m%n==0)不成立,n++导致n=3


规则不是从上往下执行吗为什么先不成立才倒回去n++求解谢谢啦。
1