质因子分解

Posted blue-lin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了质因子分解相关的知识,希望对你有一定的参考价值。

Date:2019-07-08 18:56:02

算法实现

 1 /*
 2 Data: 2019-05-02 21:00:39
 3 Problem:
 4 */
 5 
 6 //默认给定整数大于1,若遇到1的情况可以特判
 7 
 8 struct factor
 9 
10     int x;  //质因子
11     int t;  //次数
12 fac[10];       //int范围内,最多有9个不同的素数相乘
13 int pt=0;
14 /*
15 有如下定理:
16     任给整数n,如果存在[2,n]范围内的质因子
17     1.这些质因子全部小于等于sqrt(n)
18     2.有且仅有一个质因子大于sqrt(n)
19 */
20 
21 //枚举2~sqrt(n)范围内的所有素数,判断其是否是n的因子
22 for(int i=2; i<=sqrt(n); i++)
23    //O(n^1/2)
24     if(isPrime[i] && n%i==0)
25     
26         fac[pt].x = i;
27         fac[pt].t = 0;
28         while(n%i == 0)
29         
30             fac[pt].t++;        //计算该质因子的个数
31             n /= i;
32         
33         pt++;
34     
35 
36 
37 if(n!=1)
38 
39     fac[pt].x=n;        //存在大于sqrt(n)的质因子,此时n的值即为该质因子
40     fac[pt++].t=1;      //令其个数为1
41 

 

以上是关于质因子分解的主要内容,如果未能解决你的问题,请参考以下文章

质因子分解——Prime Factors

P2043 质因子分解

Uva1635 二项式递推+质因子分解+整数因子分解

质因子分解

分解质因子(个人模版)

算法---分解质因数