1. 程式人生 > >1210:因子分解

1210:因子分解

一、題目描述
輸入一個數,輸出其素因子分解表示式。
輸入
輸入一個整數 n (2≤n<100)。
輸出
輸出該整數的因子分解表示式。
表示式中各個素數從小到大排列。
如果該整數可以分解出因子a的b次方,當b大於1時,寫做 a^b ;當b等於1時,則直接寫成a。
輸入樣例
60
輸出樣例
2^235
二、解題思路
發現因子是逐漸減小的
②舉例30=532,30%50,應該明白左邊這個式子吧!30能被5整除,另外30/5等於6,而
6%3
0,6/3等於2,2%20,2/2等於1,也就是說用取餘使得餘數(假設為a)為0,然後
原數n運算n/=a,然後再取餘知道n/=a之後n
0則退出迴圈
說的不是很明白,一會兒看程式碼吧,馬上寫出來
三、參考程式
#include<bits/stdc++.h>
#define N 10001
using namespace std;
int n;
int a[N],b[N];
void calculate(int x,int y)
{
if(x0||y>x)
return;
while(x%y

0)
{
x/=y;
a[y]++;
}
calculate(x,y+1);
}
int main()
{
bool flag=false;
cin>>n;
calculate(n,2);
for(int i=2;i<=n;i++)
{
if(flag&&a[i])
cout<<"*";
if(a[i])
flag=true;
if(a[i]==1)
cout<<i;
else if(a[i]>1)
cout<<i<<"^"<<a[i];
}
cout<<endl;
return 0;
}