題目:將一個正整數分解質因數。例如:輸入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的值,重複執行第一步。html
題目來源:http://blog.sina.com.cn/s/blog_60fafdda0100wb21.htmlurl
Python實現代碼:spa
1 # -*- coding: -utf -*- 2 3 def Factorization(n): 4 k = 2; 5 L = [] 6 while k < n:#從小到大依次找出Number的質因數 7 if n%k == 0: 8 print(k) 9 n = n / k 10 continue 11 else: 12 k = k + 1 13 for i in range(1,k):#當k=n時,判斷k是否爲最大的一個質因數 14 if k%i == 0: 15 break 16 if i==k-1: 17 print(k) 18 19 if __name__ == '__main__': 20 Number = 90 21 Factorization(Number)
Java實現代碼:.net
1 public class Factorization { 2 public void NumberFactorization(int Number) {//尋找Number全部質因數的方法 3 int k=2; 4 while(k<Number) { 5 if(Number%k == 0) { 6 Number = Number/k; 7 ShowPrime(k);//輸出Number質因數的方法 8 continue; 9 } 10 k = k + 1; 11 } 12 if(IsPrimeNumber(k)) { 13 ShowPrime(k); 14 } 15 } 16 17 public boolean IsPrimeNumber(int k) {//判斷最後的k是否是Number的最大質因數,結果返回boolean類型的值 18 for(int i=2;i<k;i++) { 19 if(k%i == 0) { 20 return false; 21 } 22 } 23 return true; 24 } 25 26 public void ShowPrime(int x) { 27 System.out.print(x+",");//踩坑,單引號括起來的爲char字符類型,雙引號括起來的纔是字符串 28 } 29 30 static public void main(String args[]) {//主方法中新建類並調用方法因式分解Number 31 int Number = 90; 32 Factorization Fa = new Factorization(); 33 Fa.NumberFactorization(Number); 34 } 35 }
Java中這個單引號和雙引號的坑已是第二次踩了,容易和Python弄混淆code