a007: 判斷質數
http://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)