#31908: C的解法與思路


10730094@ms2.hssh.tp.edu.tw (給開司一份薯片)

學校 : 不指定學校
編號 : 172670
來源 : [180.177.114.33]
最後登入時間 :
2023-01-01 23:20:42
a010. 因數分解 | From: [180.177.114.33] | 發表日期 : 2022-08-27 18:52

#include<stdio.h>
#include<stdbool.h> //記得引用
int main(){
    int long Number; //變數假設和輸入 #以輸入20為例
    bool is_First = true; //是否為第一次出現
    scanf("%lld",&Number);
    int long i=2;  //一開始的除數
    while(Number>=i){ //20>=2
        int count=0; //次方數
        while(Number%i==0){ //如果輸入的數字整除2的話 執行底下 #20/2 整除//#10/2 也整除
            Number/=i;  //20/2 =10  //10/2=5
            count+=1;  //次方數加一
        }
        if (count>1 && is_First==true){ //若為第一次出現而且次方數大於1:
            printf("%d^%d",i,count);  
            is_First=false;
        }
        else if (count==1 && is_First==true){ //若為第一次出現而且次方數等於1:              
            printf("%d",i);
            is_First=false;
        }
        else if (count>1 && is_First==false){ //若不是第一次出現而且次方數大於1:
            printf(" * %d^%d",i,count);
        }            
        else if (count==1 && is_First==false){  //若不是第一次出現而且次方數等於1:
            printf(" * %d",i);
        }
        else{ //若上述四個條件不成立 (也就是在這一輪並沒有執行while迴圈)
            i+=1; //將i+1之後再來重新走一次所有步驟
        }
    }

}
 
ZeroJudge Forum