将生成列表中的所有数字乘以递增的数字,以达到值python

时间:2013-12-13 01:08:38

标签: python list rsa primes multiplication

我想将一个整数与我生成的列表中的所有数字相乘,直到达到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

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