0
我應該寫一個函數來獲得兩個整數,函數通過獲得n位長的隨機(時間)整數來計算n位長的素數密度,並計算出多少他們是素數,輸出將是(cntprimes /次)。 我寫了我的代碼,但隨着導入隨機出現錯誤。 NameError:未定義全局名稱'random'。 請讓我知道我應該在我的代碼中修復哪些內容。素數的密度:
def is_prime(m):
""" probabilistic test for compositeness of m>30
adds a trivial sieve to quickly eliminate divisibility
by small primes. """
if m in [2,3,5,7,11,13,17,19,23,29]:
return True # treats small primes separately
for prime in [2,3,5,7,11,13,17,19,23,29]:
if m % prime == 0:
return False
for i in range(0,100):
a = random.randint(1,m-1) # a is a random integer in [1..m-1]
if pow(a,m-1,m) != 1:
return False
return True
def density_primes(n, times=10000):
from random import getrandbits
cntprimes=0
for i in range(times):
global num
num=random.getrandbits(n)
if is_prime(num):
cntprimes+=1
density=cntprimes/times
return(density)
您需要在頂部輸入隨機數 – jonrsharpe