分解质因数
数学算法
每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫做分解质因数,也叫做分解质因子。如30=2×3×5 。分解质因数只针对合数。
定义
把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数。
分解质因数只针对合数。(分解质因数也称分解素因数)求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。分解质因数的算式短除法,和除法的性质相似,还可以用来求多个数的公因式
定理
不存在最大质数的证明:(使用反证法
假设存在最大的质数为N,则所有的质数序列为:N1,N2,N3……N
设M=(N1×N2×N3×N4×……N)+1,
可以证明M不能被任何质数整除,得出M也是一个质数。
而M≥N,与假设矛盾,故可证明不存在最大的质数
第二种因数分解的方法:
1975年,John M. Pollard提出。该算法时间复杂度为O( )。详见参考资料。
编程分解
C#
另一种实现
pascal
Java
Visual Basic
c语言
实现一
此代码因为用了long long int,为C99标准,故不可在VC6.0上运行。
实现二
可直接在VC6.0运行。
C++
Common Lisp
defun is-prime-number number
(let (num number))
(do ((index 21+ index)))
((≥ index num) t)
(if (= 0 mod num index))
(return-from is-prime-number nil)
(defun decomposition-quality-factor number)
(let ((num number) (prime-list make-array 10 :fill-pointer 0 :adjustable t)))
(if is-prime-number num)
progn
(return-from decomposition-quality-factor nil)
(do ((index 2 1+ index)))
((≥ index num) nil)
(if is-prime-number index)
(push index prime-list)
(dolist value prime-list)
(let (test-flag nil))
(do )
(test-flag nil)
(if (= 0 mod num value))
progn
(setf num (/ num value))
(if is-prime-number num)
progn
(return-from decomposition-quality-factor nil)
(setf test-flag t)
Python 2.x
Python 3.x
Bash Shell
批处理
javascripts
参考资料
最新修订时间:2024-11-21 13:12
目录
概述
定义
定理
参考资料