整数的唯一分解定理【模板】

给一个正整数n,将n分解为质因数。

 

说明:n的质因数要么是n本身(n是素数),要么一定小于等于sqrt(n)。因此可以用小于等于sqrt(n)的数对n进行试除,一直除到不能除为止。

这时候剩下的数如果不是1,那就是n最大的质因数。

举例说明:100=2^2 * 5^2 ;

 

模板代码:

 1 //整数的唯一分解定理
 2 int a[10000];//表示第i个质因数的值
 3 int b[10000];//表示第i个质因数的指数
 4 int n; 
 5 int cnt; //不同质因数的个数
 6 
 7 void factor()
 8 {
 9     int temp, i, now;
10     temp=(int)((double)sqrt(n)+1.0);
11     cnt=0;
12     now=n;
13     for(i=2; i<=temp; i++)
14     if(now%i==0){
15         a[++cnt]=i;//从a[1]开始存储的
16         b[cnt]=0;
17         while(now%i==0){
18             ++b[cnt];
19             now=now/i;
20         }
21     }
22     if(now!=1){
23         a[++cnt]=now;
24         b[cnt]=1;
25     }
26 }
View Code

 

posted @ 2015-08-04 20:03  我喜欢旅行  阅读(1275)  评论(0编辑  收藏  举报