我正在尝试编写一个函数,给定Int
大于1的函数给出一个由该数字的素数因子(重复)组成的非递减列表
示例:n = 12
,输出应为[2,2,3]
我不知道从哪里开始。
答案 0 :(得分:2)
当然有很多知道你想要做的算法,所以简单的谷歌搜索才能真正解决这个问题。
但是,我想向您展示一个可能对将来有所帮助的简单思考过程。
由于因子必须按升序显示,您可以:
现在,显而易见的是,您将要检查的最大素数就是您开始使用的数字。然而,基本的乘法公理表明,如果一个数字可以除以a
:
n / a = b
然后它也可以除以b
!您可以使用这一事实来进一步缩小检查范围,但我会留给您来计算(或谷歌)上限。
实际实施当然是你作业的一部分,因此在这里提供代码并不是一个明智的想法。但是,我不认为像next_prime
这样的东西对你来说很难。