42.分解正整數的質因數

編程題目:

42.從控制檯輸入一個正整數,並將其分解成質因數相乘的格式。例如:輸入90,打印出90=2x3x3x5

示例代碼:

package program.calculation.exercise42;

import java.util.Scanner;

/**
* 42.從控制檯輸入一個正整數,並將其分解成質因數相乘的格式。例如:輸入90,打印出90=2*3*3*5。
* 
* 質因數概念:
* 	如果正整數m能被n整除,則稱m是n的因數,如果m是質數,則稱m是n的質因數。    
* 	例如,4和3都能被12整除,所以4和3都是12的的因數,而3是質數,所以3是12的質因數。
* 分析:對n進行分解質因數,應先找到一個最小的質數i,然後按下述步驟完成:
* 	(1)如果n==i,則說明分解質因數的過程已經結束,打印出即可。
* 	(2)如果n!=i,但n能被i整除,則應打印出i的值,並用n除以i的商,作爲新的正整數n,重複執行第一步。
* 	(3)如果n!=i,同時n不能被i整除,則用i+1作爲i的值,重複執行第一步。
*/

public class PrimeFactor {
	public static void main(String[] args) {
		
		System.out.println("請輸入一個正整數:");
		@SuppressWarnings("resource")
		Scanner scanner = new Scanner(System.in);
		int plus = scanner.nextInt(); //獲得一個正整數
		
		getPrimeFactor(plus);
		
	}

	//分解正整數的質因數
	private static void getPrimeFactor(int n) {
		
		System.out.print(n+" = ");
		//如果n!=i,同時n不能被i整除,則用i+1作爲i的值,重複執行
		for (int i=2;i<=n;i++) { //2是最小的質數
			//如果n!=i,但n能被i整除,則應打印出i的值,並用n除以i的商,作爲新的正整數n,重複執行
			while ((0 == n%i) && (i != n)) { 
				n /= i;
				System.out.print(i + "*");
			}
			if(i == n) { //如果n==i,則說明分解質因數的過程已經結束,打印出即可
				System.out.print(i);
				break;
			}
		}
		
	}
}

結果顯示:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章