【质因数分解算法详解】C/Java/Go/Python/JS/Dart/Swift/Rust等不同语言实现

关于质因数分解算法的不同语言实现,通过实例来看不同语言的差异

什么是质因数算法?

即任意一个合数可以分解为多个质数相乘。例如:

20 = 2 * 2 * 5

45 = 3 * 3 * 5

210 = 2 * 3 * 5 * 7

520 = 2 * 2 * 2 * 5 * 13

按数学运算:列竖式或左右分解,拿能被整除的最小的素数做除数,不断整除得到新的得数,最后把所有的除数和最后的得数连起来就是。

算法基本思路

除数的平方小于等于被分解数时,说明可以分解。除数从最小的质数2开始,不断递增,直到无法分解。

  • 先从最小的质数2开始整除被分解数

  • 当能够整除时,说明分解成功,将整除后的得数作为新被分解数继续分解

  • 继续从2开始整除,如果2无法整除,则递加到新的质数作为除数

  • 直到将数字分解完,也就是递增数的平方大于被分解数时为止

代码实现思路

  1. 先设立一个除数,从最小的质数开始,也就是2;

  1. 当能够被当前除数整除时,该除数就是因数,将原数字设为被整除后的结果;

  1. 继续从该除数开始整除新的结果,并不断循环;

  1. 当无法被整除时,则递增除数,得到新的除数,继续第2步;

  1. 直到除数的平方大于要分解的值,终止循环。

最后所有能整除的除数与最后的大于1的无法分解的得数就是结果。

不同语言的特点

你可能感兴趣的:(Web开发,编程开发,算法,python,java,c++,javascript)