各位在國小時都學過因數分解,都瞭解怎麼樣用紙筆計算出結果,現在由你來敎電腦做因數分解。
因數分解就是把一個數字,切分為數個質數的乘積,如 12=2^2 * 3
其中, 次方的符號以 ^ 來表示。
輸入說明 :
一個整數, 大於1 且 小於等於 1000000
輸出說明 :
一個字串
範例輸入 :
20
17
999997
範例輸出 :
2^2 * 5
17
757 * 1321
程式碼:
#include <stdio.h>
#include <math.h>
int main()
{
int i,j,n;
int total_factor,check,sqr;
int factor[78500];
factor[0] = 2;
factor[1] = 3;
total_factor = 2;
i=5;
while(i<999984)
{
check = 1;
sqr = sqrt(i);
for(j=2;j<total_factor;j++)
{
if(i%factor[j] == 0)
{
check = 0;
break;
}
else if(sqr < factor[j])
break;
}
if(check)
{
factor[total_factor] = i;
total_factor++;
}
i=i+2;
check = 1;
sqr = sqrt(i);
for(j=2;j<total_factor;j++)
{
if(i%factor[j] == 0)
{
check = 0;
break;
}
else if(sqr < factor[j])
break;
}
if(check)
{
factor[total_factor] = i;
total_factor++;
}
i=i+4;
}
while(scanf("%d",&n)==1)
{
check = 0;
for(i=0;factor[i] <= n;i++)
{
for(j=0;(n%factor[i])==0;j++)
n = n / factor[i];
if(j>0)
{
if(check!=0)
printf(" * ");
printf("%d",factor[i]);
if(j>1)
printf("^%d",j);
check=1;
}
}
printf("\n");
}
return 0;
}
http://zerojudge.tw/ShowProblem?problemid=a010
沒有留言:
張貼留言