Python3使用平方根方法查找素数时超过时间限制

时间:2018-04-15 12:21:50

标签: python-3.x infinite-loop primes square-root time-limiting

我试图在python3中写一个数字是否是素数。

我被要求仅使用以下方法:

"将输入除以小于其平方根的所有正素数。"

例如,如果给定的数字是33,那么我必须将33除以[2,3,5](小于5.xx,33的平方根)

同时,在找到[2,3,5]的过程中,我不能使用除要求之外的任何方法。

所以我的代码如下:

def is_prime(num):
  import math
  a=math.sqrt(num)
  llist=[2,3]
  pri=0
  for i in range(2,int(a)+1):
    root=math.sqrt(i)
    for m in llist:
      if m<root:
       left=i%m
       if left!=0:
         llist.append(i)
  if num in llist:
    return True
  for m in llist:
    if num%m==0:
      return False
    if num%m!=0:
      pri=pri+1
  if pri==len(llist): 
    return True

当输入的数字超过7位时,代码无法正常运行,它只是停止响应。

显然在我的代码中某处有一个我无法弄清楚的无限循环。

如果有人可以帮我解决这个问题,我将非常感激。

0 个答案:

没有答案