分解质因数
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
a)如果这个质数恰等于n,则说明分解质因数的过程已经结束,
打印出即可。
b) 如果n不等于i,i能被n整除,则应打印出i的值,
并用n除以i的商,作为新的正整数n,重复执行第一步。
提示:如果一个自然数能写成两个自然数的乘积,那么这两个自然数就叫作原来那个数的因数。
package com.lut.wy;
import java.util.Scanner;
public class Test6_4 {
public static void divide(int n, int s, int N) {
if (prime(n) == 0 && s != N) {
for (int i = 2; i <= n; i++) {
if (n % i == 0) {
s = s * i;
System.out.print(i + "*");
divide(n / i, s, N);
break;
}
}
} else {
System.out.print(n + "=" + s * n);
return;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
divide(n, 1, n);
}
/**判断递归的n值是否为质数
* @param n
* @return
*/
public static int prime(int n) {
if (n == 2 || n == 3)
return 1;
if (n % 6 != 1 && n % 6 != 5)
return 0;
for (int j = 5; j <= Math.sqrt(n); j += 6)
if (n % j == 0 || n % (j + 2) == 0)
return 0;
return 1;
}
}