1.判断一个数是否为质数(除了1和它本身之外,不能被其他数整除)
第一版:
#判断一个数是否为质数 def is_prime1(n): if n == 0 or n == 1: return 0 i = 2 while i < n: if n % i == 0: return 0 i += 1 return 1
第二版:
import math def is_prime2(n): if n == 0 or n == 1: return 0 i = 2 while i <= int(math.sqrt(n)): if n % i == 0: return 0 i += 1 return 1
第三版:
相比于第二版,省去了对去偶数因子的判断
import math def is_prime3(n): if n == 0 or n == 1: return 0 if n % 2 == 0: return n == 2 if n % 3 == 0: return n == 3 if n % 5 == 0: return n == 5 for i in range(7,int(math.sqrt(n))+1,2): #省去了对偶数的判断,如果概述能够被偶数整除,则一定能被2整除,程序早就返回了 if n % i == 0: return 0 return 1
2.显示整数n以内的所有质数:
#查找n以内的所有质数 def prime(n): flags = [1]*(n+2) #设置标志位,默认都是1,表示是质数 flags[1] = 0 #1不是质数 p = 2 #质数从2开始查找 while p <= n: print(p) #打印质数 #在python3中的range就是python2中的xrange for i in range(2*p,n+1,p): flags[i] = 0 #将该质数的倍数(非该质数本身)都置位0,表示非质数 #while p <= n: while True: p += 1 if flags[p] == 1: #flags[n+1]=1 保证了程序最后的顺利退出 break