如何检查质因数列表以确定原始数字是否可以表示为 Python 中两个 3 位数的乘积?

How do I check a list of prime factors to determine if the original number can be expressed the product of two 3-digit numbers, in Python?

我正在尝试确定一个 6 位数字是否可以表示为两个三位数字的乘积。

我已经按照从小到大的顺序将 6 位数字分解为素数列表,如果其中一个素数超过我感兴趣的三位数大小,则使用 break 语句关闭进程.

我似乎无法制定一种算法来将素数重新组合成所有可能的成对因子。我可以很容易地检查每一对的三位数。

我在 python 工作,如果有影响的话。如果有人可以伪代码或以其他方式帮助概述逻辑步骤。

这只是一个更大问题的最后一步。如果您对完整的上下文感兴趣,那就是 Euler Project Problem #4... https://projecteuler.net/problem=4

对于非常多的因素,正如@Ken Y-N 在评论中所说,您可能最好循环遍历所有 3 位数字。

在你的问题中,你似乎在问如何生成子集:I can't seem to formulate an algorithm that recombines the primes into all possible paired factors

我们可以很容易地利用二进制来做到这一点:

如果您有一个(不一定不同的)因子列表,您可以获取长度,并以其二进制表示形式生成从 0 到 2^length 的所有数字,确保保存前导 0。

然后,您可以遍历每个 string,如果字符为 0,则不包含在因子中,如果为 1,则包含。然后,我们可以使用除法轻松生成另一个因子。接下来,我们轻松检查长度。