我有这种非常粗略的方式来编写这个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语句结合使用?
答案 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