Java 语言实现正整数的质因数分解
思路:
举例说明 65=5x13
从最小的质数2开始逐一递增进行尝试,尝试到5能够整除65,即65第一个质因子就是5,
之后将分解后的65/5也就是13,作为新的数据继续进行质因数分解,进行寻求下一个质因子,从而便可以构造递归。
注意:因为第一质因子5前面的数据均不能整除65,其必然也不能整除13,因此在进行第二个质因子寻求的时候,可以直接从5开始递增判断比较。因此考虑到使用静态变量k来当前保存尝试的质数。
递归出口就是,最后一个质因子一定是恰好与当前所递增到的质数相等(而不是之前的蕴含)
代码实现:
package btc;
import java.util.Scanner;
public class Timeinvert {
static int k=2;//用于记录当前尝试的质因数;使用静态变量这样的变量为全局所有实例所共有
public static void main(String[] args) {
// TODO Auto-generated method stub
int num;
Scanner in = new Scanner(System.in);
num = in.nextInt();
System.out.print(num+"=");
f(num);
in.close();
}
public static void f(int n)
{
if(n==k)//递归出口(所有的数经过若干次质数分解后,最后剩余的一定是与自身相等的素数)
{
System.out.print(n);
return;
}
else
{
if(n%k==0)
{
n/=k;
System.out.print(k+"x");
f(n);
}
else
{
k++;
f(n);
}
}
}
}