📅  最后修改于: 2023-12-03 15:28:32.334000             🧑  作者: Mango
有时,我们需要编写程序来找到一个数字的重新排列,使得它可以被自身的一个因数整除。这种数字通常被称为具有“重新排列整除性”。
在编写此类程序时,我们可以使用以下算法:
以下为一个Python实现:
def permute_divisible(n):
factors = [i for i in range(1, n+1) if n % i == 0]
factor_strs = [sorted(str(x)) for x in factors]
target_str = sorted(str(n))
return any(factor_strs[i] == target_str for i in range(len(factor_strs)))
以上代码中,我们首先找到目标数字的所有因数,使用列表推导式生成一个范围在1到目标数字之间的数字列表,并检查每个数字是否是目标数字的因数。然后,我们将这些因数转换为字符串,并按字母顺序排序。
接下来,我们将目标数字转换为一个字符串,并在其上也执行相同的排序。最后,我们检查目标字符串是否出现在因数字符串列表中。
下面是一个示例:
>>> permute_divisible(12)
True
>>> permute_divisible(24)
False
>>> permute_divisible(120)
True