分解質因數--------藍橋杯基礎訓練

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

代碼如下:

import java.util.Scanner;
public class Main{
	public static void main(String[] args) {
		Scanner s=new Scanner(System.in);
		int x=s.nextInt();
		int y=s.nextInt();
		for (int i=x;i<=y;i++) {
			int n=i;
			StringBuilder str=new StringBuilder(n+"=");   //也可直接用+號拼接
			if(fz(n)==-1)                                  //fz(n)==-1則說明爲第一個最小質數
										str.append(n); else {
				while(fz(n)!=-1) {
					str.append(fz(n)+"*") ;
					n=n/fz(n);
					if(fz(n)==-1)                              //fz(n)==-1則說明爲最後一個最小質數
											str.append(n);
				}
			}
			System.out.println(str);
		}
	}
	static int fz(int x) {                                  //判斷是否爲質數,是返回-1,否則返回最小質因數
		for (int i=2;i<x;i++) {
			if(x%i==0) {
				return i;
			}
		}
		return -1;
	}
}

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