当前位置:首页 » 操作系统 » 因数分解算法

因数分解算法

发布时间: 2023-08-03 09:04:24

① 用短除法分解质因数65

65=5×13

质因数(素因数或质因子)在数论里是指能整除给定正整数的质数。除了1以外,两个没有其他共同质因子的正整数称为互质。因为1没有质因子,1与任何正整数(包括1本身)都是互质。正整数的因数分解可将正整数表示为一连串的质因子相乘,质因子如重复可以用指数表示。根据算术基本定理,任何正整数皆有独一无二的质因子分解式 [1] 。只有一个质因子的正整数为质数。
每个合数都可以写成几个质数(也可称为素数)相乘的形式 [2] ,这几个质数就都叫做这个合数的质因数。如果一个质数是某个数的因数,那么就说这个质数是这个数的质因数;而这个因数一定是一个质数。
1没有质因子。
5只有1个质因子,5本身。(5是质数)
6的质因子是2和3。(6 = 2 × 3)
2、4、8、16等只有1个质因子:2。(2是质数,4 =2²,8 = 2³,如此类推)
10有2个质因子:2和5。(10 = 2 × 5)

相关内容
编辑
播报
基本信息
质因数 [3] 就是一个数的约数,并且是质数。
比如8=2×2×2,2就是8的质因数;
12=2×2×3,2和3就是12的质因数。
把一个式子以12=2×2×3的形式表示,叫做分解质因数。
把一个合数写成几个质数相乘的形式表示,这也是分解质因数 [4] ,如16=2×2×2×2,2就是16的质因数。
把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数。
分解质因数只针对合数。(分解质因数也称分解素因数)求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。
分解质因数的方法是先用一个合数的最小质因数去除这个合数,得出的数若是一个质数,就写成这个合数相乘形式;若是一个合数就继续按原来的方法,直至最后是一个质数 。
分解质因数的有两种表示方法,除了最常用的“短除分解法”之外,还有一种方法就是“塔形分解法”。
分解质因数对解决一些自然数和乘积的问题有很大的帮助,同时又为求最大公约数和最小公倍数做了重要的铺垫。
Pollard Rho因数分解
1975年,John M. Pollard提出了第二种因数分解的方法,Pollard Rho快速因数分解。该算法时间复杂度为

分解质因数代码:
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
计算方法
短除法
求最大公因数的一种方法,也可用来求最小公倍数。
求几个数最大公因数的方法,开始时用观察比较的方法,即:先把每个数的因数找出来,然后再找出公因数,最后在公因数中找出最大公因数。
例1、求12与18的最大公因数。
12的因数有:1、2、3、4、6、12 。
18的因数有:1、2、3、6、9、18。
12与18的公因数有:1、2、3、6。
12与18的最大公因数是6 [4] 。
这种方法对求两个以上数的最大公因数,特别是数目较大的数,显然是不方便的。于是又采用了给每个数分别分解质因数的方法。
12=2×2×3
18=2×3×3
12与18都可以分成几种形式不同的乘积,但分成质因数连乘积就只有以上一种,而且不能再分解了。所分出的质因数无疑都能整除原数,因此这些质因数也都是原数的约数。从分解的结果看,12与18都有公约数2和3,而它们的乘积2×3=6,就是 12与18的最大公约数。
采用分解质因数的方法,也是采用短除的形式,只不过是分别短除,然后再找公约数和最大公约数。如果把这两个数合在一起短除,则更容易找出公约数和最大公约数。
从短除中不难看出,12与18都有公约数2和3,它们的乘积2×3=6就是12与18的最大公约数。与前边分别分解质因数相比较,可以发现:不仅结果相同,而且短除法竖式左边就是这两个数的公共质因数,而两个数的最大公约数,就是这两个数的公共质因数的连乘积。
实际应用中,是把需要计算的两个或多个数放置在一起,进行短除。
在计算多个数的最小公倍数时,对其中任意两个数存在的约数都要算出,其它无此约数的数则原样落下。最后把所有约数和最终剩下无法约分的数连乘即得到最小公倍数。
只含有1个质因数的数一定是亏数。

② 分解质因数的方法

1、相乘法

写成几个质数相乘的形式(这些不重复的质数即为质因数),实际运算时可采用逐步分解的方式。

如:36=2*2*3*3 运算时可逐步分解写成36=4*9=2*2*3*3或3*12=3*2*2*3

2、短除法

从最小的质数除起,一直除到结果为质数为止。分解质因数的算式的叫短除法。

(2)因数分解算法扩展阅读:

定理

不存在最大质数的证明:(使用反证法)

假设存在最大的质数为N,则所有的质数序列为:N1,N2,N3……N

设M=(N1×N2×N3×N4×……N)+1,

可以证明M不能被任何质数整除,得出M也是一个质数。

而M>N,与假设矛盾,故可证明不存在最大的质数。

最大公约数的求法:

1、用分解质因数的方法,把公有的质因数相乘。

2、用短除法的形式求两个数的最大公约数。

3、特殊情况:如果两个数互质,它们的最大公约数是1。

如果两个数中较小的数是较大的数的约数,那么较小的数就是这两个数的最大公约数。

③ 质因数分解算法

数学中,整数分解(素因数分解)问题是指:给出一个正整数,将其写成几个约数的乘积。例如,给出45这个数,它可以分解成32 ×5。根据算术基本定理,这样的分解结果应该是独一无二的。这个问题在代数学、密码学、计算复杂性理论和量子计算机等领域中有重要意义。
2005年,作为公共研究一部分的有663个二进制数位之长的RSA-200已经被一种一般用途的方法所分解。

如果一个大的,有n个二进制数位长度的数是两个差不多大小相等的约数的乘积,现在还没有很好的算法来以多项式时间复杂度分解它。

这就意味着没有已知算法可以在O(nk)(k为常数)的时间内分解它。但是现在的算法也是比Θ(en)快的。换句话说,现在我们已知最好的算法比指数数量级时间要快,比多项式数量级时间要慢。已知最好的渐近线运行时间是普通数域筛选法(GNFS)。时间是:

对于平常的计算机,GNFS是我们已知最好的对付n个二进制数位大约数的方法。不过,对于量子计算机, 彼得·秀尔在1994年发现了一种可以用多项式时间来解决这个问题的算法。如果大的量子计算机建立起来,这将对密码学有很重要的意义。这个算法在时间上只需要O(n3),空间只要O(n)就可以了。 构造出这样一个算法只需要2n量子位。2001年,第一个7量子位的量子计算机第一个运行这个算法,它分解的数是15

如果想获得最新消息,请你上wikipedia网络,英文版。

热点内容
压缩文件是什么 发布:2025-03-13 05:19:38 浏览:995
debian自启动脚本 发布:2025-03-13 05:16:23 浏览:428
如何登录微信找回密码 发布:2025-03-13 05:06:20 浏览:449
pc游戏编程人机博弈源码 发布:2025-03-13 04:51:45 浏览:605
手机原生配置低怎么玩流畅 发布:2025-03-13 04:35:31 浏览:736
分线器安卓供电口有什么用 发布:2025-03-13 04:19:54 浏览:137
端口访问关系 发布:2025-03-13 03:49:50 浏览:789
运用零基预算法 发布:2025-03-13 03:45:30 浏览:791
安卓服务器搭建web 发布:2025-03-13 03:40:26 浏览:317
铜板算法 发布:2025-03-13 03:40:25 浏览:621