首页 > 解决方案 > 我可以在 for 循环中扩展范围吗?

问题描述

这是来自 Project Euler 网站的问题,我似乎无法正确解决。如果我要除的数字不能被 x 整除,我想扩展 for 循环的范围。问题在顶部。有任何想法吗?

# 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
# What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

def main():
    num = 0
    to = 20
    for num in range(1, to):
        isDivisible = True
        for x in range(1, 20):
            if num % x != 0:
                isDivisible = False
                to += 1    #Here I try to extend the loop
                continue

        if isDivisible:
            print(num)
            break


main()

标签: pythonpython-3.xfor-looprange

解决方案


我不确定这是不是真的,但是:

def f(x):
    z = 1
    for i in range(1, x + 1):
        for i_2 in range(1,i + 1): #Check the multipliers! For example, since the number 9 is multiplied by 3 before, if it is multiplied by 3 again, it becomes a layer.
            if i % i_2 == 0 and ( z * i_2 ) % i == 0:
                z *= i_2
                break
    print(z)

f(20)

232792560


推荐阅读