/* 【程式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...