2017-05-28 18 views
1

我试图找到1-100000之间的随机数,与7 15, 循环划分应该运行,直到它找到合适的数量, 我要找到匹配努力做到:如何使用“而”

from random import randint 
while True: 
    for x in range (1,100000): 
     if x % 7 == 0 and x % 13 ==0 and x % 15 == 0: 
     print x 

回答

1

你可以做到这一点与列表理解:

l=[x for x in range(1,100000) if x % 7 == 0 and x % 13 == 0 and x % 15 == 0] 

然后,选择从列表中选择一个随机值,顶线更改为import random,你可以这样做:

random.choice(l) 
+0

感谢!我还有很多东西需要学习 – Meirshalom

1

我们知道,7,13和15是共素数,那么我们应该从7 * 13 * 15 = 1365开始。然后您可以应用@numbermaniac解。

import random 
random.choice([i for i in xrange(1365,1000000) if i%1365 == 0]) 

另一种解决方案可能是,

# select random number between your upper_limit/1365 
# then multiplying it 1365 
random.randint(1, 732)*1365 
+0

尼斯优化!小挑逗:原始问题最多使用100,000,而你的使用1,000,000。 – numbermaniac

+0

我已经失去了零 - )) – marmeladze

+0

不用担心,哈哈。随着你的新编辑,我认为733应该是732,因为'randint'是包含的,并且如果它返回733,那1365将是1,000,545,这高于最大值100万:) – numbermaniac