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


題目:將一個正整數分解質因數。例如:輸入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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM