Python 3.x 尽管之前的实现工作正常,但多因子计算器仍失败

Python 3.x 尽管之前的实现工作正常,但多因子计算器仍失败,python-3.x,Python 3.x,首先,定义如下: 多整除数是一个整数,其中数字的前n位(从左到右)完全可被n整除。例如,整数141是可多除的,因为: 1%1==0 14%2==0 141%3==0 我正在研究一个递归的可多除性检查器,给定一个数,它将检查该数是否可多除,如果不可多除,则每隔一个数递归检查一次,直到它到达一个可多除的数为止。 不幸的是,我的代码没有按我希望的方式工作。有趣的是,当我输入一个已经可以被多次整除的数字时,它会完成它的工作并输出这个可以被多次整除的数字。当我输入一个不可多除的数字时,如13,就会出现

首先,定义如下:

多整除数是一个整数,其中数字的前n位(从左到右)完全可被n整除。例如,整数141是可多除的,因为:

  • 1%1==0
  • 14%2==0
  • 141%3==0
我正在研究一个递归的可多除性检查器,给定一个数,它将检查该数是否可多除,如果不可多除,则每隔一个数递归检查一次,直到它到达一个可多除的数为止。 不幸的是,我的代码没有按我希望的方式工作。有趣的是,当我输入一个已经可以被多次整除的数字时,它会完成它的工作并输出这个可以被多次整除的数字。当我输入一个不可多除的数字时,如13,就会出现问题。下一个可多除数应该是14,但程序无法输出它。相反,它会陷入无限循环,直到内存耗尽。 以下是我的代码:

def next_polydiv(num):
    number = str(num)

    if num >= 0:

        i = 1
        print(i)
        while i <= len(number):

            if int(number[:i]) % i == 0:
                i += 1
                print(i)
            else:
                i = 1
                print(i)
                num += 1
                print(num)
        else:
            return num

    else:
        print("Number must be non-negative")
        return None
def next_polydiv(num):
number=str(num)
如果num>=0:
i=1
印刷品(一)

而我的错误是,在递增num之后,您没有更新number

以下是工作代码:

def next_polydiv(num):
    number = str(num)

    if num >= 0:

        i = 1
        print(i)
        while i <= len(number):

            if int(number[:i]) % i == 0:
                i += 1
                print(i)
            else:
                i = 1
                print(i)
                num += 1
                print(num)
                number = str(num) # added line
        else:
            return num

    else:
        print("Number must be non-negative")
        return None
def next_polydiv(num):
number=str(num)
如果num>=0:
i=1
印刷品(一)

而我认为另一个好问题是,如果你不允许重复数字。在这种情况下,base 10中的唯一解决方案是
381654729
。解决方案是相当稀疏的,直到你达到17个基数,它有1000多个解决方案,第一个是:
157B4893FDA62GCE