1. 程式人生 > >【JAVA】求出區間[a,b]中所有整數的質因數分解。

【JAVA】求出區間[a,b]中所有整數的質因數分解。

問題描述  求出區間[a,b]中所有整數的質因數分解。輸入格式  輸入兩個整數a,b。輸出格式  每行輸出一個數的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是從小到大的)(具體可看樣例)樣例輸入3 10樣例輸出3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5提示  先篩出所有素數,然後再分解。資料規模和約定

  2<=a<=b<=10000

import java.util.Scanner;

public class Main {

	/**
	 * (1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,打印出即可。
	 * (2)如果n>k,但n能被k整除,則應打印出k的值,並用n除以k的商作為新的正整數n,重複執行第一步。
	 * (3)如果n不能被k整除,則用k+1作為k的值,重複執行第一步。
	 * 
	 * @param joy
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Integer a = sc.nextInt();
		Integer b = sc.nextInt();
		for (int i = a; i <= b; i++) {
			// 輸入值大於等於3
			if (i >= 3) {
				String m = "";
				int k = 2;
				int j = i;
				while (j != k) {
					// 如果n>k,但n能被k整除,則應打印出k的值,並用n除以k的商作為新的正整數n
					if (j % k == 0) {
						m = m + k + "*";
						j = j / k;
					}
					// 如果n不能被k整除,則用k+1作為k的值
					else if (j % k != 0) {
						k++;
					}
				}
				m = m + k;
				System.out.println(i + "=" + m);
			} else {
				System.out.println(i + "=" + i);
			}
		}
	}
}