问题描述
求出区间[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
Java实现:
package lanqiaoTest3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** *@author wenfan *@version 2019年3月19日下午3:07:49 */ public class ResolveFactor { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String[]s= br.readLine().split(" "); int m=Integer.parseInt(s[0]); int n=Integer.parseInt(s[1]); for(int i=m;i<=n;i++) { System.out.println(i+"="+factorResolve(i)); } } public static boolean isPrime(int a) { boolean isPrime=true; if(a>0) { for(int i=2;i<=(int)Math.sqrt(a);i++) { if(a%i==0) { isPrime=false; break; } } } return isPrime; } public static String factorResolve(int i) { if(i==2) { return 2+""; } int temp=2; int m=i; String result=""; while(temp!=m) { if(isPrime(i)) { result+=(i+""); break; } if(i%temp==0) { i=i/temp; result+=(temp+"*"); if(i==2) { result+=(temp+""); break; } }else { if(isPrime(i)) { result+=(i+""); break; } temp++; } } return result; } }