import java.util.Scanner; public class Test4_1 {
/**
* 由于Test4可能由于质因数过大引发递归太深,导致堆栈溢出,可以在重新定义分解的方法
*
* */ //judgePrime()方法判断参数是不是质数
public static boolean judgePrime(int number) {
int i = 0;
for (i = 2; i < number; i++) {
if (number % i == 0) {
break;
}
}
//如果是质数,那么经过上面的循环,没有一个i使number能被i整除,最后循环执行完i会增加到值等于number
//返回true说明number是质数
if (i == number) { return true;
} else {
return false;
}
} public void fenJieNumber(int number) {
//如果number已经是质数,那就不用分解了,直接输出number就好了
if (Test4_1.judgePrime(number)) { System.out.println(number);
}
//如果不是质数,就要分解因数了
else {
// 因数k
int k = 0;
//分解的思想基本和前面一样,从最小的质数2开始找
for (k = 2; k < number; k++) {
if (number % k == 0) {
System.out.print(k + "*");
number = number / k;
//这里number变为(number / k)后,要重新从最小的质数2开始找
//所以将k重新赋值为1,因为执行完语句后,k还会自增
k = 1;
}
//如果number不能被k整除,那么就continue执行k++,继续下一轮循环
else {
continue;
}
}
//经过上述分解后,最后当然剩下最后的一个不能在被分解的质数,它就作为最后一个质因数
System.out.print(number);
}
}
public static void main(String[] args) {
Test4_1 t4 = new Test4_1();
Scanner input = new Scanner(System.in);
System.out.println("请输入一个整数:");
int number = input.nextInt();
t4.fenJieNumber(number);
}
}
/**
* 由于Test4可能由于质因数过大引发递归太深,导致堆栈溢出,可以在重新定义分解的方法
*
* */ //judgePrime()方法判断参数是不是质数
public static boolean judgePrime(int number) {
int i = 0;
for (i = 2; i < number; i++) {
if (number % i == 0) {
break;
}
}
//如果是质数,那么经过上面的循环,没有一个i使number能被i整除,最后循环执行完i会增加到值等于number
//返回true说明number是质数
if (i == number) { return true;
} else {
return false;
}
} public void fenJieNumber(int number) {
//如果number已经是质数,那就不用分解了,直接输出number就好了
if (Test4_1.judgePrime(number)) { System.out.println(number);
}
//如果不是质数,就要分解因数了
else {
// 因数k
int k = 0;
//分解的思想基本和前面一样,从最小的质数2开始找
for (k = 2; k < number; k++) {
if (number % k == 0) {
System.out.print(k + "*");
number = number / k;
//这里number变为(number / k)后,要重新从最小的质数2开始找
//所以将k重新赋值为1,因为执行完语句后,k还会自增
k = 1;
}
//如果number不能被k整除,那么就continue执行k++,继续下一轮循环
else {
continue;
}
}
//经过上述分解后,最后当然剩下最后的一个不能在被分解的质数,它就作为最后一个质因数
System.out.print(number);
}
}
public static void main(String[] args) {
Test4_1 t4 = new Test4_1();
Scanner input = new Scanner(System.in);
System.out.println("请输入一个整数:");
int number = input.nextInt();
t4.fenJieNumber(number);
}
}