使用if语句使用范围的优雅方式?

时间:2011-06-06 06:49:06

标签: python

我有这种非常粗略的方式来编写这个IF语句。

for a in range (2,3000):
    if ( a % 1) == 0 and ( a % 2) == 0 and ( a % 3) == 0 and ( a % 4) == 0 and ( a % 5) == 0 and ( a % 6) == 0 and ( a % 7) == 0 and ( a % 8) == 0  and ( a % 9) == 0 and ( a % 10) == 0 :
    print a

我假设有一个更好的方法来编写它,例如使用范围函数与IF语句结合使用?

2 个答案:

答案 0 :(得分:12)

对于或多或少的直接翻译,

怎么样?
for a in range(2, 3000):
    if all(a % k == 0 for k in range(1,11)):
        print a

虽然当然所有整数a的%1 == 0,所以检查是不必要的。

答案 1 :(得分:7)

您需要的是LCM的倍数(1,2,3,4,5,6,7,8,9,10),它们都在您的范围内。有多种计算LCM的方法(参见。http://en.wikipedia.org/wiki/Least_common_multiple

由于LCM(1,2,3,4,5,6,7,8,9,10)= 2 ^ 3 * 3 ^ 2 * 5 * 7 = 2520,你可以做类似的事情

lcm = 2520
i = 2/lcm
j = 3000/lcm
for k in range(i, j)
  print (k + 1) * lcm