Python学习笔记(杂记)
程序员文章站
2022-03-12 16:57:56
...
求素数的方法
一、完全遍历法
- 例:求0-100以内的素数
基本思路:
设计一个变量J,让J在内层循环增长。对于每一个待判定的数 i,当i小于指定范围时,进入外层while循环,让每一个i去除每一个J看看能不能被整除,如果可以则不是素数,如果对于每一个J,这一个i都不能整除,则这个i是素数。
由于素数的因数只有1和它自己,因此,J可以从2起。
执行过程:
首先对i
和J
进行一个除法运算,当J<=i/j时(例如i=6时即进入while循环)进入内层while循环。对i与J进行取余运算。如果i是J的整数倍,则i%j就是0(即没有余数)。由于一个not的作用,则会使结果由0变为1,从而使if判断有效,进入里面的break,使得内层while循环结束,即执行后面的if语句。
我们还是以i=6为例,当i=6时
J=2,
J<=3(6/2)
NOT(6%2 == 0)==1,执行break
进入if(j > i/j)判断.同时,J=2,i/J=3,所以不满足if条件,即不会输出6是素数,即6不会是素数。
如果i不是J的整数倍,比如以i=9为例。当i=9时:
J=2,
J<=4 (9/2),进入while循环,NOT(9%2 ==1)==0,因此不会执行if后面的语句,即继续进行while内层循环,然后 j += 1,即J=3,然后J<=9/3,进入if进行判断,NOT(9%3 ==0)==1,if判断有效,执行break,while内层循环中断,然后不满足J>i/J,因此不会输出9是素数,从而完成了判断。
然后i++,对I=10进行判断。依次循环判断即可。
#break,素数
i = 2
while(i < 100):
j = 2
while(j <= (i/j)):
if not(i%j):break
j = j + 1
if (j > i/j) : print (i," 是素数")
i = i + 1
print("Good bye!")
知识点:此程序主要是涉及了循环嵌套和break语句。需要和后面continue语句进行区分。
上一篇: 跟我一起学Oozie之——客户端常用命令
下一篇: JAVA(杂记一)