4 【程序 4 分解质因数】
题目:将一个正整数分解质因数。例如:输入 90,打印出 90=2*3*3*5。
程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:
(1)如果这个质数恰等于 n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果 n<>k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商,作为新的正整数 n,重复执行第一 步。
(3)如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步。
package cskaoyan;
import org.junit.Test;
public class cskaoyan4 {
@Test
public void zhiYinShu() {
java.util.Scanner in = new java.util.Scanner(System.in);
int number = in.nextInt();
int prime = 2;
in.close();
if (number < 2) {
return;
} else {
System.out.print(number + "=");
while (number != prime) {
if (number % prime == 0) {
System.out.print(prime + "*");
number = number / prime;
} else {
prime = nextPrime(prime);
}
}
System.out.print(number);
}
}
public int nextPrime(int number) {
number = number + 1;
while (true) {
if (isPrime(number)) {
return number;
} else {
number = number + 1;
}
}
}
public boolean isPrime(int number) {
boolean flag = true;
if (number < 2) {
flag = false;
} else if (number == 2) {
flag = true;
} else {
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
flag = false;
break;
}
}
}
return flag;
}
}