欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python学习笔记(杂记)

程序员文章站 2022-03-12 16:57:56
...

求素数的方法

一、完全遍历法

  • 例:求0-100以内的素数
    基本思路:
    设计一个变量J,让J在内层循环增长。对于每一个待判定的数 i,当i小于指定范围时,进入外层while循环,让每一个i去除每一个J看看能不能被整除,如果可以则不是素数,如果对于每一个J,这一个i都不能整除,则这个i是素数。
    由于素数的因数只有1和它自己,因此,J可以从2起。
    执行过程:
    首先对 iJ进行一个除法运算,当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语句进行区分。

相关标签: 杂记