a007: 判斷質數

最後編輯:2017-02-24 建立:2017-02-23 歷史紀錄

百千.IOhttp://zerojudge.tw/ShowProblem?problemid=a007

  • MAX=int(2147483647**0.5)+1
  • is_prime=[False,False]+[True]*(MAX-1)
  • primes=[]
  • now=2
  • while True:
  • primes.append(now)
  • for i in range(now*2,MAX+1,now):
  • is_prime[i]=False
  • now+=1
  • try:
  • while is_prime[now]==False:
  • now+=1
  • except:
  • break
  • from time import time
  • from random import randint
  • start=time()
  • for _ in range(100000):
  • try:
  • x=randint(2,2147483647) # 含終點 # 自己測資自己生
  • for prime in primes:
  • if x%prime:
  • continue
  • elif x==prime:
  • # print('質數')
  • break
  • else:
  • # print('非質數')
  • break
  • else:
  • # print('質數')
  • pass
  • except:
  • break
  • print(time()-start)