[Java] 藍橋杯BASIC-16 基礎練習 分解質因數
問題描述
求出區間[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
提示
先篩出所有素數,然後再分解。
資料規模和約定
2<=a<=b<=10000
package base16; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a = in.nextInt(); int b = in.nextInt(); in.close(); for (int i = a; i <= b; i++) { int temp = i; System.out.print(temp + "="); boolean flag = false; while (temp != 1) { //每次從小到大找,找到一個就求除數,然後重新開始找 for (int j = 2; j <= temp; j++) { if (isPrimer(j) && temp % j == 0) { temp /= j; if (flag) { System.out.print("*"); } System.out.print(j); flag = true; //break; } } } System.out.println(); } } //判斷素數 private static boolean isPrimer(int j) { if (j == 0) { return false; } else if (j == 2 || j == 3) { return true; } else { for (int i = 2; i < Math.sqrt(j * j); i++) { if (j % i == 0) { return false; } } } return true; } }ofollow,noindex" target="_blank">❤❤點選這裡 -> 訂閱PAT、藍橋杯、GPLT天梯賽、LeetCode題解離線版❤❤
