import java.util.ArrayList;
import java.util.Scanner;
public class Test_04 {
/*
* 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
* 程序分析:分解质因数就是把这个正整数分解为质数的积.
* 1.输入一个正整数
* 2.调用方法,使用for循环得到该正整数以下的质数.
* 3.用if语句判断那些质数能被整除并输出.
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个正整数");
int x = sc.nextInt();
fenjie(x); //调用方法求质数
}
private static void fenjie(int x) {
ArrayList<Integer> list = new ArrayList<Integer>();
//求质数,并存入集合中
for(int i = 1;i<=x;i++){
if(i == 2){
list.add(i);
}
a:for(int j = 2;j<i;j++){
if(i%j==0){
break a;
}if(j==i-1){
list.add(i);
}
}
}
//查看遍历集合
for (Integer integer : list) {
System.out.println(integer);
}
System.out.println("===============");
//调用print方法求质因数
print(list,x);
}
private static void print(ArrayList<Integer> list,int x) {
a:for (Integer in : list) {
if(x%in == 0){
int m = x/in;
System.out.println(in);
if(m!=1){
print(list,m);
break a;
}
}
}
}
}
|
|