如何检查素数列表,以确定原始数字是否可以用Python中的两个3位数的乘积表示



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

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

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

如果有什么不同的话,我正在python中工作。如果有人能够编写代码或以其他方式帮助概述逻辑步骤。

这只是更大问题的最后一步。如果你对完整的上下文感兴趣,那就是欧拉项目问题4。。。https://projecteuler.net/problem=4

正如@Ken Y-N在评论中所说,对于大量的因素,你最好循环使用所有三位数。

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

我们可以很容易地利用二进制:

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

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

最新更新