#46496: 簡單的解法_邊計算邊輸出


devil1004@livemail.tw (yanru)

學校 : 國立高雄應用科技大學
編號 : 115422
來源 : [192.192.101.7]
最後登入時間 :
2025-09-02 23:38:38

//a010.因數分解
#include <iostream>

using namespace std;

int main(){

    //輸入n
    int n,time;
    bool first = true; //第一次不輸出" * "的flag

    cin >> n;

    for (int i=2;i<=n;(i==2?i++:i+=2)){  //i增量先2+1加到3,之後皆+2僅驗證奇數 i=2 i+1 i!=2 i+2
        time = 0;
        while (n%i ==0){ //多次除以i直到不能整除
            n /= i;  //n = n / i
            time ++; //記錄次方數    
        }
       
        //輸出
        if (first == false && time != 0) //非第一次輸出且有次方數(i是n的因數)
            cout << " * ";

        if (time == 1){ //如果次方數是1,不輸出次方數。
            cout << i;
            first = false; //輸出過第一次輸出flag改為false
        }
        else if (time >1){ //如果次方數超過1,輸出因數及次方數。
            cout << i << "^" << time;
            first = false; //輸出過第一次輸出flag改為false
        }

    }
    return 0;
    }