#28984: 這樣寫會不會太繁瑣


eason09140914@gmail.com (C8763)

學校 : 國立桃園高級中學
編號 : 179676
來源 : [125.227.170.177]
最後登入時間 :
2022-01-21 11:32:10
a010. 因數分解 | From: [36.224.140.115] | 發表日期 : 2022-01-20 16:47

#include<iostream>

using namespace std;

 

int main(){

int n;//分解的數 

cin >> n;

int r, b; 

int c=1;

int a[10000];

while(n!=1)//將因數存到陣列 

{

for(int i=2;i<(n+1);i++)

{

r=n%i;

if(r==0)

{

n=n/i;

a[b]=i;

b++;

break;

}

}

}

for(int i=0; i<b; i++)//將因數格式化 

{

if(a[i]==a[i+1])//當後面的數與當前的數相同則次方+1 

{

c++;

}

else if(a[i-1]!=a[i] && a[i+1]!=a[i] && a[i+1]>a[i])//當該數為1次且不為最大的因數 

{

cout << a[i] << " * ";

}

else if(a[i-1]!=a[i] && a[i+1]!=a[i] && a[i+1]<a[i])//當該數為1次且為最大的因數

{

cout << a[i] ;

}

else//當得到該數的最大次 

{

cout << a[i] << "^" << c;

c=1;

if(a[i+1]>a[i])//當該數為多次且為最大的因數 

cout << " * ";

}

}

return 0;

}

 
ZeroJudge Forum