【JAVA】求出區間[a,b]中所有整數的質因數分解。
阿新 • • 發佈:2019-02-04
問題描述 求出區間[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提示 先篩出所有素數,然後再分解。資料規模和約定
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); } } } }