1、判断一个数字是不是质数
首先,我们来看一下怎么判断一个数字是不是质数。
回想一下小时候学数学,质数就是,一个数字如果只有1和它本身两个因数,这个数字就是质数。
下面是判断质数的一个小程序:
num=int(input("判断质数,请输入一个数字:"))
flag=True#初始化为是
for i in range(2,num):
if(num%i==0):
flat=False
print(f"{num}{'是'if flag else'不是'}质数")
2、求100以内的质数
按照刚才的思路,求100以内质数的程序应该是这样的:
num=100
list=[]#用来放质数
for i in range(2,num+1):
flag=True#初始化为真
for j in range(2,i):
if i%j==0:
flag=False
if flag:
list.append(i)
print(f'{num}以内的质数有{list}')

100以内的很快就求出来了,我们看一下1万以内。
from time import *
start=time()
num=10000
list=[]#用来放质数
for i in range(2,num+1):
flag=True
for j in range(2,i):
if i%j==0:
flag=False
if flag:
list.append(i)
print(f'{num}以内的质数有{list}')
end=time()
print(f'使用了{end-start}秒')

用了3.2秒,我的计算机还是可以的,那么就试试10万吧。

沃德天,居然用了300多秒,赶紧改进一下。
2、改进1
from time import *
start=time()
num=10000
list=[]#用来放质数
for i in range(2,num+1):
flag=True
for j in range(2,i):
if i%j==0:
flag=False
break#改动在这里,只有这一行
if flag:
list.append(i)
print(f'{num}以内的质数有{list}')
end=time()
print(f'使用了{end-start}秒')

只用了29秒。还是有点慢,再来改进一下。
3、再改进
from time import *
start=time()
num=10000
list=[]#用来放质数
for i in range(2,num+1):
flag=True
j=1
while j <=i**0.5:
if i%j==0:
flag=False
break#改动在这里,只有这一行
j+=1
if flag:
list.append(i)
print(f'{num}以内的质数有{list}')
end=time()
print(f'使用了{end-start}秒')

1秒不到,可见一个好算法的重要性。
4、秀一下100万
刚才是10万,再来秀一下100万。

16秒,也还阔以。
本文介绍了如何使用Python判断质数,并逐步优化算法,从求解100以内的质数到快速解决100万以内的质数问题,展示了算法改进对效率的影响。
112

被折叠的 条评论
为什么被折叠?



