Python和Java編程題(五)

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

相關文章
相關標籤/搜索