通过生成和检查p个随机对。
如何去做这件事有点困惑。我知道我可以制作一个算法来确定两个整数是否相对素数。我也很难理解生成和检查p随机对的含义。
答案 0 :(得分:3)
如果没有完全枚举0和k之间所有数字的相对素数(一个巨大的任务和一个增长为k的平方的数字),你可以通过选择相对大量的随机对(p中的p)进行估计。并确定它们是否相对优质。
假设是随着样本量的增加,相对素数的比例趋向于所需的概率值(即如果您采用10,000个样本对,并且您发现其中有7,500个是相对素数,那么您估计相对素数的概率为0.75)。
Python中的 random.randint(0, k)
选择0
和k
之间的(伪)随机整数。
答案 1 :(得分:0)
import random as rs
p = ? # Put in your value here
k = ? # put in range value here
lst = []
for i in range(p):
lst.append([rs.randint(0, k), rs.randint(0, k)])
# Now loop over lst and find how many pairs are relatively prime (count)
prob = count/p
答案 2 :(得分:0)
from random import randint
def gcd(a, b):
return gcd(b, a % b) if b else a # Euclid's algorithm
def is_coprime(a, b):
return gcd(a, b) == 1
def get_coprime_prob(k, runs=1000):
count = sum(1 for _ in range(runs) if is_coprime(randint(0, k), randint(0, k)))
return count / float(runs)