我想将一个整数与我生成的列表中的所有数字相乘,直到达到65的值。我从2开始(第一个素数)并且乘以63(再次是所有素数)直到我达到65.如果没有达到2的值我然后想要它尝试3,依此类推,直到正确值我们到达。我在python中这样做,我也是新手,所以如果这是基本的话,我道歉。然后我想打印出相乘的数字给我这个值,即我知道5和13会给我65.这是我的一些代码:
from __future__ import division
import fractions
ml = []
nl = []
p = 5
q = 17
d = 0
x = 2
y = 2
z = (p-1)*(q-1)
print z
n = p*q
print n
for x in range(z):
if (fractions.gcd(x, z) == 1):
ml.append(x)
##print ml
s = 1
for x in ml:
t = s * x
if t == 65:
print s
print x
break
else:
s = s + 1
答案 0 :(得分:2)
你正在递增s并在循环的每个阶段移动到ml中的下一个元素。所以你只尝试1 * ml [0],2 * ml [1]等。我想你想要两个嵌套的for循环,这样你就可以尝试每个可能的s值的ml元素。使用itertools可以更清晰地获得这种行为:
for s,x in itertools.product(range(65),ml):
t = s * x
if t == 65:
print s
print x
break