因數分解 程式寫法

#include <stdio.h>

#include <stdlib.h>

int main(void) {

int n;

printf("請輸入整數:");

scanf("%d", &n);

printf("%d = ", n);

int i;

for(i = 2; i * i <= n;) if(n % i == 0) {

printf("%d * ", i);

n /= i;

} else { i++; }

return 0;

}

--------------------------------------------------------------------------

請問這是因數分解的程式嗎 還能簡化嗎 例如去掉 { }

請幫我重新複製 在貼上

---------------------------------------------------------------------------

有更簡單的寫法嗎(這題可不答)

已更新項目:

/= 是什麼意思 (我原本的程式

1 個解答

評分
  • A-Shin
    Lv 5
    8 年前
    最佳解答

    去掉{ } 應該不算是簡化 簡化應該是指 去除多餘的程式碼 可能會進行到多於不必要的動作

    我是用遞回寫的 主函式看起來就簡單多了 關鍵在於副函式

    可是使用遞回缺點需要花費較多的時間和記憶體空間

    由於輸入的數比較小 所以看不太出來

    但是可以增加程式的可讀性

    #include<stdio.h>

    #include<stdlib.h>

    void math (int num,int i)

    {

    if(num>=i)

    {

    if(num%i==0)

    {

    printf("%dx",i);

    math(num/i,i); //如果該數能被整除 將商帶入副函式 但i不變

    }else math(num,i+1); //如果該數不能被整除 再次進入副函式 但i要+1

    }

    }

    int main(void)

    {

    int i=2,n;

    printf("請輸入一個正整數:\n");

    scanf("%d",&n);

    printf("%d=",n);

    math(n,i); //因數分解的副函式

    printf("\b \n"); //清除最後一個多出來的X

    system("pause"); //按任意鍵繼續 ((可有可無

    return 0;

    }

    2013-01-23 21:32:35 補充:

    應該是n=n/i 意思是n的值為n除以i 的商

    參考資料:
還有問題?馬上發問,尋求解答。