1. 程式人生 > >Python和Java編程題(五)

Python和Java編程題(五)

步驟 判斷 結果 混淆 log 打印 java編程 sim i++

題目:將一個正整數分解質因數。例如:輸入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的值,重復執行第一步。

題目來源:http://blog.sina.com.cn/s/blog_60fafdda0100wb21.html

Python實現代碼:

 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實現代碼:

 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弄混淆

Python和Java編程題(五)