c語言經典100例》c12 分解質因數

2021-08-08 08:15:43 字數 1274 閱讀 2701

/* 【程式12】	c12.c

題目:將乙個正整數分解質因數。例如:輸入90,列印出90=2*3*3*5。

* 程式分析:對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成:

(1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。

(2)如果n>k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整數你n,

重複執行第一步。

(3)如果n不能被k整除,則用k+1作為k的值,重複執行第一步。 */

/* version: 1 */

#include #define arr_size 1000

/* 總體思路: <1> <2> <3> */

int main(int argc, char const *argv)

; int i, j, flag = 0, label = 0;

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

}if (flag == 1)

flag = 0;

} /* <2> 求出相匹配的素數,儲存到陣列match中 */

int match[arr_size] = {};

int k = 0, lab = 0;

while (1)

if (n%pri[k] == 0) // @程式分析(2)

k++; // @程式分析(3)

} printf("質因數個數:%d\n", lab);

/* <3> 將match陣列中的數依次讀取出來 */

printf("%d = ", value);

int a;

for (a=0; a

精簡版:無需先求出素數,因為從2開始往後增,直到n能被整除的最小的那個數一定是素數

/* version: 2 */

#include int main(int argc, char const *argv)

else

break;

} } printf("%d\n",n);

return 0;

}

遞迴版:

// 分解質因數

#include void prim(int m, int n)

}int main(int argc, char *argv)

C語言經典100例 002

企業發放的獎金根據利潤提成.利潤 i 低於或等於10萬元時,獎金可提10 利潤高於10萬元,低於20萬元時,低於10萬元的部分按10 提成,高於10萬元的部分,可可提成7.5 20萬到40萬之間時,高於20萬元的部分,可提成5 40萬到60萬之間時高於40萬元的部分,可提成3 60萬到100萬之間時...

經典C語言程式設計100例

程式1 題目 有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?程式2 題目 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時,獎金可提10 利潤高於10萬元,低於20萬元時,低於10萬元的部分按10 提成,高於10萬元的部分,可提成7.5 20萬到40萬之間時,...

C語言經典演算法100例004

name c語言經典演算法100例004 author 巧若拙 date 25 08 14 07 08 description 題目 輸入某年某月某日,判斷這一天是這一年的第幾天?year能被4整除 and 不能被100整除 or year能被400整除 include include includ...