ppython中速度os 2代码(素数)之间的差异

时间:2019-10-26 11:22:43

标签: python math

我运行了两个目的相同的代码来检查一个数字是否为质数,我想知道为什么一个代码比另一个更快。

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

0 个答案:

没有答案