给一个正整数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 }