核心关键词: a,b = b,a+b
#!/bin/python3 #-*- coding: UTF-8 -*- a = 0 b = 1 print(b) for i in range(1,10): a,b=b,a+b print(b)求质数+++++++++根据实验验证,求质数时通过range(3,int(i**0.5)+1,2),开根的方式效率比较好 核心关键词: (1) 利用质数的特性,打印10且以5结尾的数字都不是质数 (2) 偶数肯定不是质数
#!/bin/python3 #-*- coding: UTF-8 -*- import datetime start = datetime.datetime.now() count = 1 for i in range(3,100001,2): if i > 10 and i%10 == 5: continue for j in range(3,int(i**0.5)+1,2): if i%j == 0: break else: count += 1 delta = (datetime.datetime.now() - start).total_seconds() print(delta) print(count) ######效率如下######### [python@centos7 323]$./4.py 0.143254 9592核心关键词: (1) 质数在6的倍数附近,即在6的倍数之前或6的倍数之后 (2) 偶数肯定不是质数
#!/bin/python3 #-*- coding: UTF-8 -*- import datetime start = datetime.datetime.now() number = 100000 count = 2 for num in range(4, number): if num%6 != 1 and num%6 != 5: continue else: snum = int(num**0.5+1) for i in range(5, snum, 2): if not num%i: break else: count += 1 pass #print(count) delta = (datetime.datetime.now() - start).total_seconds() print(delta) print(count ####效率如下###### [python@centos7 323]$./6.py 0.14614 9592核心关键词: (1) 利用数组和进一步缩小取值范围 (1)利用标记思想,记住标记思想,记住标记思想
#!/bin/python3 #-*- coding: UTF-8 -*- import math flag = False primenumber = [] for x in range(2,1000): for i in primenumber: if x % i == 0: flag = True break if i >= math.ceil(math.sqrt(x)): #最大值除以自己的开平方都不能整除的话,说明已经除到最大值, #因此就没有必要继续遍历下去,直接跳出 #等价于for i in range(x**0.5+1) break if not flag: print(x) primenumber.append(x)