标题:新手上路理解不了思路,求大佬详细解析谢谢
只看楼主
陈锦鹏
Rank: 1
等 级:新手上路
帖 子:50
专家分:4
注 册:2019-9-25
结帖率:11.11%
已结贴  问题点数:20 回复次数:5 
新手上路理解不了思路,求大佬详细解析谢谢
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);
    }
搜索更多相关主题的帖子: printf 思路 解析 for 新手上路 
2019-11-09 10:30
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:20 
你这个是输出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;
}

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-11-09 13:44
陈锦鹏
Rank: 1
等 级:新手上路
帖 子:50
专家分:4
注 册:2019-9-25
得分:0 
回复 2楼 纯蓝之刃
能解释一下第一次循环的答案吗我理解不了谢谢啦
2019-11-09 14:54
陈锦鹏
Rank: 1
等 级:新手上路
帖 子:50
专家分:4
注 册:2019-9-25
得分:0 
回复 2楼 纯蓝之刃
if(m == n)这边理解不了呀
2019-11-09 15:03
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:0 
回复 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比较.。。。。。

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-11-09 15:11
陈锦鹏
Rank: 1
等 级:新手上路
帖 子:50
专家分:4
注 册:2019-9-25
得分:0 
回复 5楼 纯蓝之刃
if(m%n==0)不成立,n++导致n=3


规则不是从上往下执行吗为什么先不成立才倒回去n++求解谢谢啦。
2019-11-12 22:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497691-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015782 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved