題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
程序分析:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:
(1)如果這個質數恰等於(小於的時候,繼續執行循環)n,則說明分解質因數的過程已經結束,另外 打印出即可。
(2)但n能被k整除,則應打印出k的值,並用n除以k的商,作為新的正整數n.
重復執行第二步。
(3)如果n不能被k整除,則用k+1作為k的值,重復執行第一步。
1 #include <stdio.h>
2
3 int main()
4 {
5 // num要分解的數
6 // i已經分解出來的。
7 int num,i;
8 printf( " please input a num: ");
9 scanf( " %d ",&num);
10 printf( " %d= ",num);
11
12 // 分解.從1到num檢查,看看是不是因子。
13 for(i= 2; i<=num; i++)
14 while(num%i== 0)
15 {
16 num/=i;
17 printf( " %d* ",i);
18 }
19
20 // 1:輸出最后一個因子。一定是1,如果上面for有=num也輸出來了,所以只剩下1
21 // 即:num==1;
22 // 2:如果for沒有=num的情況,那么,不一定是1的情況,可能還是其他,可以根據自己的需要改。
23 printf( " %d ",num);
24
25 return 0;
26 }
2
3 int main()
4 {
5 // num要分解的數
6 // i已經分解出來的。
7 int num,i;
8 printf( " please input a num: ");
9 scanf( " %d ",&num);
10 printf( " %d= ",num);
11
12 // 分解.從1到num檢查,看看是不是因子。
13 for(i= 2; i<=num; i++)
14 while(num%i== 0)
15 {
16 num/=i;
17 printf( " %d* ",i);
18 }
19
20 // 1:輸出最后一個因子。一定是1,如果上面for有=num也輸出來了,所以只剩下1
21 // 即:num==1;
22 // 2:如果for沒有=num的情況,那么,不一定是1的情況,可能還是其他,可以根據自己的需要改。
23 printf( " %d ",num);
24
25 return 0;
26 }