#22457: 測資2到底是什麼?記憶體區段錯誤??


fastrvretk@gmail.com (Abas Tanmia)

學校 : 不指定學校
編號 : 128721
來源 : []
最後登入時間 :
2020-09-03 14:28:56
a010. 因數分解 | From: [220.129.159.249] | 發表日期 : 2020-09-06 10:49

#include<stdio.h>       // 此程式可作質因數分解

#include<math.h>

 

int main(){

 

    int n, temp, i, count[1000003]={0};

    int factor[1000003]={0};

 

    scanf("%d", &n);

    temp = n;

 

    for (i=2; i<=temp; i++){

        if (temp%i==0){         // 若temp可被i整除

            temp=temp/i;        // 此行即是短除法的結果

            factor[i]=1;        // 將factor[i]之值變為1,即表示有此質因數存在

            count[i]++;         // 對應的count[i]紀錄此質因數的次方數

            i--;                // 為了避免temp還有此質因數,將i--再做一次

        }

    }

 

    int test=0, j=n;

 

    for (j=n; j>=2; j--){

        if (factor[j]!=0){      // 檢查最後一個質因數的所在

            test=j;

            break;

        }

    }

    //printf("j=%d test=%d\n", j, test);

 

    int k=2;

 

    for (k=2; k<=n; k++){

        if (factor[k]!=0){

            if (count[k]!=1) printf("%d^%d", k, count[k]);      // 若有此質因數且其不只一次方則輸出此形式

            else printf("%d", k);                               // 若此質因數只一次則輸出成此形式

        }

        if (factor[k]!=0 && k!=test) printf(" * ");             // 若此質因數非最後一個質因數,則再輸出"*"

    }

 

    printf("\n");

 

    return 0;

}

 

 
ZeroJudge Forum