质因数分解

时间:2021-08-09
本文章向大家介绍质因数分解,主要包括质因数分解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

算术基本定理:任何一个大于1的自然数都能唯一分解为有限个质数的乘积。

\[N=p^{c_1}_1 p^{c_2}_2 \cdots p^{c_m}_m \\ p_1 <p_2<\cdots<p_m(p_i为质数) \\ c_i为非负整数数 \]

证明
https://baike.baidu.com/item/算术基本定理/10920095?fr=aladdin
见百度百科。。自己也看得不是很懂
质因数分解
1.试除法
我们可以扫苗2~$\lfloor \sqrt n \rfloor $的每个数d,若d能整除n,则在n中不断除去d,直至除去所有的因子d,同时记录除去d的个数。
因为每个合数的非质因子在骚猫到这个数之前就已经从n中除去了,所以上述能整除n的一定是质数。

int c[10000], p[10000];
int cnt;
inline void divide(int n) {
	cnt = 0;
	int t = sqrt(n);
	rep(i, 2, t) {
		if(n % i == 0) {//i是质数
			p[++cnt] = i, c[cnt] = 0;
			while(n % i == 0) n /= i, c[cnt]++;
		}
	}
	if(n > 1) p[++cnt]=n,c[cnt]=1;//未分解完,那么剩下的也是个质数
	rep(i,1,cnt) printf("%d^%d\n",p[i],c[i]);
}

时间复杂度\(O(\sqrt n )\)
2.Pollard Rho

本文来自博客园,作者:{2519},转载请注明原文链接:https://www.cnblogs.com/QQ2519/p/15046904.html

原文地址:https://www.cnblogs.com/QQ2519/p/15046904.html