1、使用while循环,不对算法做任何优化
import datetime
start = datetime.datetime.now()
a = 2
while a < 100000:
i = 2
while i < a:
if a % i == 0:
break
i += 1
#else:
#print(a)
a += 1
usetime = (datetime.datetime.now() - start).total_seconds()
print(usetime)
总共用时90.5秒
2、使用for循环,也不做任何优化
import datetime
start = datetime.datetime.now()
for a in range(2,100000):
for i in range(2,a):
if a % i == 0:
break
usetime = (datetime.datetime.now() - start).total_seconds()
print(usetime)
#else:
#print(a,end=',')
用时55.9秒
3、使用for循环,进行开根号的优化
import math,datetime
start = datetime.datetime.now()
for a in range(2,100000):
for i in range(2,int(math.sqrt(a))+1):
if a % i == 0:
break
usetime = (datetime.datetime.now() - start).total_seconds()
print(usetime)
#else:
#print(a,end=',')
用时0.419秒
4、使用for循环,在开根号的基础上进行进一步优化
import datetime
start = datetime.datetime.now()
#print(2,end=',')
for n in range(3,100000,2):
if n > 10 and n % 10 == 5:
continue
else:
for a in range(2,int(n**0.5)+1):
if n % a == 0:
break
usetime = (datetime.datetime.now() - start).total_seconds()
print(usetime)
#else:
#print(n,end=',')
用时0.37秒
可以看出算法优化对程序运行效率的提升巨大,而且这里使用for循环比while循环的效率要更高