鱼C论坛

 找回密码
 立即注册
查看: 3635|回复: 2

[已解决]代码

[复制链接]
发表于 2016-8-15 13:29:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/*打印出100到200的全部素数
#include<stdio.h>
#include<math.h>
void main()
{
        int m,k,i,n=0;
        for(m=101;m<=200;m=m+2)
        {
                k=sqrt(m);
                for(i=2;i<=k;i++)
                {
               
                if(m%i==0)break;
               
                }
                if(i>=k+1)
                {
               
                printf("%d\n",m);n=n+1;
               
               
                }
       
        }*/这个代码不知道为什么要这样写,还有为什么是m+2,求大神指教






}
最佳答案
2016-8-16 22:07:50
首先,看函数得先从主函数看起,虽然这个函数没有调用其他函数,但是以后遇到一个新的函数的话从主函数看起可以帮助我们认识这个函数的主要功能
上一个帖子,我和你说明了为什么m+2,那我们继续说明接下来的代码
  1.   k=sqrt(m);
复制代码

这个代码的作用其实和m+2的作用是一样,都是起到了筛选的作用,你想想,一个可以开根的数字有可能是素数吗?明显不可能的。筛选过后进入下一个循环,当m不可以被i整除的时候跳出循环在进行判断,i是否大于k+1(这个的话,你可以拿101来做个例子,因为是整型,103开根后等于10,进入循环发现条件都不符合,此时i=11,就符合第二个if语句的条件了然后就打印出来)
那个n起到了计数的作用,虽然你的最后没有写出来,但是可以加上
  1. printf("总共有%d个素数\n");
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-16 21:48:50 | 显示全部楼层
你想想看素数的定义,只能被自己本身和1整除的数,当然不可能是偶数啦,101+1=102,
m+2的话就可以直接去除偶数部分,减轻程序的运算量
如果是很大的程序的话,从头到尾的计算是需要分配更多的内存去计算的,工作量是很大的,所以要学会去除一些本来就可以去除的数。
为了保持帖子的整洁性,你的下一个问题我再发一个帖子给你(不好意思,我有强迫症)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-16 22:07:50 | 显示全部楼层    本楼为最佳答案   
首先,看函数得先从主函数看起,虽然这个函数没有调用其他函数,但是以后遇到一个新的函数的话从主函数看起可以帮助我们认识这个函数的主要功能
上一个帖子,我和你说明了为什么m+2,那我们继续说明接下来的代码
  1.   k=sqrt(m);
复制代码

这个代码的作用其实和m+2的作用是一样,都是起到了筛选的作用,你想想,一个可以开根的数字有可能是素数吗?明显不可能的。筛选过后进入下一个循环,当m不可以被i整除的时候跳出循环在进行判断,i是否大于k+1(这个的话,你可以拿101来做个例子,因为是整型,103开根后等于10,进入循环发现条件都不符合,此时i=11,就符合第二个if语句的条件了然后就打印出来)
那个n起到了计数的作用,虽然你的最后没有写出来,但是可以加上
  1. printf("总共有%d个素数\n");
复制代码

评分

参与人数 1荣誉 +3 鱼币 +10 收起 理由
~风介~ + 3 + 10 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 08:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表