我试图最大化Python上的Euler toclient函数,因为它可以使用大量的任意数字。问题是程序在一段时间后被终止,所以它没有达到所需的比率。我想把起始数字增加到一个更大的数字,但我认为这样做不明智。我试着得到一个数,当除以tolient得到大于10时。本质上,我试图找到一个稀疏的、符合这个标准的客户机号码。在
这是我的phi函数:
def phi(n):
amount = 0
for k in range(1, n + 1):
if fractions.gcd(n, k) == 1:
amount += 1
return amount
p55\。在
此外,所有后续的原始数也是如此,因为pn/phi(pn)是一个严格递增的序列:
p1/phi(p1)为2,为正。对于n>;1,对于n>;1,pnnphi(pnn其)等于pn-1pn/phi(pn-1n-1n,自ppn)的,其,自pn和pn-1是互质的,等于(pn-1/phi(pn-1)(pn/phi(pn)。我们知道所有n的phi(pn)>;0,因此pn/phi(pn)>;1。因此我们得到了序列pnphi(pn#)是严格递增的。在
我不相信这些数字是唯一能满足你要求的数字,但我没有一个有效的方法来产生其他的想法。相比之下,生成原语相当于生成前n个素数并将列表相乘(无论是使用函数工具.reduce(), 数学.prod()在3.8+中,或ye old for loop)。在
至于写phi(n)函数的一般问题,我可能会先找到n的素数因子,然后使用Euler的乘积公式来计算phi(n)。另外,请确保不要使用浮点除法。即使通过试除法求n的素数因子,其性能也应优于计算gcd n倍,但当处理大n时,用一个有效的素数因式分解算法来代替这一点会有好处。除非你想要一个好的十字架,否则不要写你自己的。在sympy中有一个我知道,考虑到这个问题的普遍性,可能还有很多其他的问题。需要时间。在
说到时间,如果这对你(或未来的读者)来说仍然有足够的相关性,让你想要时间。。。当然也要把前面的答案也放进去。在
我有一个部分的解决方案给你,但结果看起来不太好。。(这个解决方案可能不能给你一个现代计算机硬件的答案(内存的数量目前是有限的))我从thispcg质询中得到了一个答案,并将其修改为从n/phi(n)到特定n的比率
我的公司里只有足够的内存。测试约
0 < n < 10^8
,最大比值约为6。虽然10^8已经花了几秒钟时间(不确定开销是多少…),但是你可能没有任何运气去达到更大的n。。。斯派德最近表现得很奇怪)相关问题 更多 >
编程相关推荐