我运行了两个目的相同的代码来检查一个数字是否为质数,我想知道为什么一个代码比另一个更快。
1)通过if,elif和else消除情况的代码:
from time import time
def isprime(n):
if n<=1:
return False
elif n==2:
return True
elif n>2 and n%2==0:
return False
else:
x=int(n**0.5)
for i in range(3,x+1,2):
if n%i==0:
return False
return True
t0=time()
for i in range(1,1000):
print(isprime(i))
t1=time()
print("time used for solving this:",t1-t0)
2)在k = loop条件下运行更多的代码:
from time import time
def isprime(n):
if n<=1:
return False
else:
for i in range(2,(n//2)+1):
if n%i==0:
return False
return True
t0=time()
for i in range(1,1000):
print(isprime(i))
t1=time()
print("time used for solving this:",t1-t0)
我有两个代码(如上所示),都检查素数,但在第一个中,我做了更多的for循环来检查条件,在第二个中,我通过使用if,elif和else消除了查询。 / p>
但是,具有更多for循环的代码具有更好的性能。我期望第一个会更快,但第二个最终会更快。
第一个解决问题的时间为8.115293025970459
,第二个解决问题的时间为6.84753155708313