题目描述
求出区间[a,b]中所有整数的质因数分解。
输入
输入描述:
输入两个整数a,b。
输入样例:
3 10
输出
输出描述:
每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)
输出样例:
3=3
4=22
5=5
6=23
7=7
8=222
9=33
10=25
HINT:时间限制:1.0s 内存限制:512.0MB
先筛出所有素数,然后再分解。
解题思路
就一个两层循环的事情,第一层循环区间里的数子,第二层判断是否能分解,第二层从2开始累加,在用第一层的数字来除,若能除尽输出相应的除数直到相等结束。
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int m=scanner.nextInt();
int n=scanner.nextInt();
for (int i=m;i<=n;i++){
System.out.print(i+"=");
if (i==1){
System.out.println("1");//判断是否为1
}
int j=2;
int i1=i;//当前的值
while (j<=i1){
if (j==i1){
//当相等时就没有因数直接输出
System.out.println(j);
break;
}else if (i1%j==0){
//若有因数除以因数 并输出因数
System.out.print(j+"*");
i1=i1/j;
}else {
//都不满足继续循环
j++;
}
}
}
}
}