我必须编写一个代码来查找输入数字的两个最高的co prime因子,10 ^ num。
现在,我写道:
def coprimes(num):
for x in range (2, num):
for y in range (2, num):
while (gcd(x,y) == 1) & (x != y):
if (x*y==num):
return (x,y)
由于forloops,这显然是一个非常慢的程序。每当我将它输入终端时,产生答案的速度太慢。我也不确定这是否正确。您对我如何改进此方法有任何建议吗?
这种方法的一个例子应该是:
>>> coprimes(10)
(9765625, 1024)
答案 0 :(得分:2)
你想要
return 2**num, 5**num
请注意,问题定义不明确 - 不清楚2**num, 5**num
是否应被视为高于1, 10**num
。但是,这些因素都高于其他因素。
要得出这个答案,请注意,最多1个因子可以被2整除,并且最多1个因子可以被5整除。如果一个因子可被2和5整除,则另一个必须如果一个因子可以被2整除,另一个因子被5整除,我们选择2和5的最高幂可能。 (2或5除以数字的选项产生较低的因子。)