求100------200之间的素数

简介: 求100------200之间的素数

解析:

 

所谓素数就是除了1和它本身之外,没有其它因数的自然数;所以根据这个特性,我们在编写这个代码的时候是否有点思路?写两层循环,第一层是100-200的数(暂定i),第二层是1-j-1的数(暂定j);当i%j ==0说明还有其它因数,就不是素数;else全部循环走完一遍都没有,就是素数。


方法1:


1.1注意事项:


我们平时有没有注意?素数好像都是奇数啊!!!根本没有偶数,因为偶数必然能被2整除啊=======》肯定有因数2;所以我们写循环时只要奇数就可以啦,这样可以减少循环次数!!!


1.2下面看具体代码:

6097025843c140b2821fd1ed2d5911b4.png

1.3代码分析:

 

1.第一次层循环有没有发现我是从第101数开始的,每次+2就可以完美的避过偶数,只让素数循环;

 

2.第二层循环,我们取的数是2-----i-1;


3.如果(i%j==0)说明数i有除了1和它本身外的其它因数,既然已经确定它有其它因数了,就没必要继续寻找还有没有其它更多的因数,直接跳出循环;跳出循环后会判断一下此时的数是不是i==j;这是打印的判断条件;如果等于就打印,不等于就不打印;

 

4.当我们内循环走完,发现都没有数使得(i%j==0);我们同样会去走到判断此时的数是不是i==j;如果等于就打印,不等于就不打印;


1.4总结:

 

我们还定义了一个计数器count,没打印一个素数就让count++;并且选取的数据是100-200范围比较少的数;为了就是便于后期我们的验证!!!


代码优化:


2.1注意事项:


这个代码是不是还可以继续优化?当然是可以的;我们平常有没再次注意到一个数(暂定为n)的因数必然是<=的?


比如:225===》=15那么以15以分界面,你会发现225所有的因数之中,每一对因数必然有一个是<=15的?=====》例如:45*5=225;一个因数是45,我们不管,但是另外一个因数是5确实是<=15的;是不是很神奇?有了这个想法,我们就可以继续优化我们的代码了!!!


2.2下面看具体代码:

6794c9ad8db044bebf70e135ebdc385c.png


2.3代码分析:


1.想要得到这个gif.gif数,我们就需要调用库函数sqrt(n)========》头文件是<math.h>


2.嗯?是不是发现我们又定义一个标记变量flag?有什么用呢?


答:当然是为了作为打印结果的条件啊,在第一种方法中我们用的打印条件条件时(i == j);优化后的代码循环只能走到;所以我们就只能想办法寻找另外一种方式====》定义一个标记!!!


3.flag=1初始值赋值为1,写在内循环里,当满足(i%j == 0);我们就把值改为0;如果没有满足,最终flag还是为1,那么这个数就是我们想要的;当内循环结束,外循环+1,开始判断下一个数,flag又再次赋值为1,很巧妙吧!!!


2.4总结:

 

以上求100-200之间的素数,你学会了吗?有错误欢迎指出!!!


c59ae0c5b92a4596be1f108f695f2c20.jpg

相关文章
|
4月前
判断 101 到 200 之间的素数
判断 101 到 200 之间的素数。
40 0
|
7天前
判断101到 200之间的素数
判断101到 200之间的素数。
23 9
|
3月前
|
算法 JavaScript 前端开发
寻找100到n之间的素数
【6月更文挑战第23天】
35 6
|
3月前
|
C语言
C语言---函数----100~n之间的素数
C语言---函数----100~n之间的素数
|
4月前
判断101到200之间的素数
判断 101 到 200 之间的素数。
29 1
|
4月前
题目----从小到大输出
题目----从小到大输出
26 0
|
4月前
|
算法 Java
算法-----全排列
算法-----全排列
|
4月前
打印100~200之间的素数
打印100~200之间的素数