整数因子分解问题(java实现)

问题描述:大于1的正整数可以分解为n=x1 * x2* ···*xm
例如,当n=12,共有8种不同的分解式:

12=12                                     12=3x2x2
12=6x2                                   12=2x6
12=4x3                                   12=2x3x2
12=3x4                                   12=2x2x3

算法设计:对于给定的正整数n,计算n共有多少种不同的分解式

数据输入:12

数据输出:8
算法实现:

public class 整数因子分解 {
    //计算分解的个数
    static int count=0;
    public static void factor(int n)
    {
        //每次n=1代表一次分解成功
        if(n==1)
        { //次数+1
            count++;
        }
        
        for (int i=2;i<=n;i++)
        {  
            //如果取余为0说明可以整除
            if(n%i==0)
            {
                //n整除i,直到n变为1
                factor(n/i);
            }
        }

    }
    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        //输入分解的整数
        int n=input.nextInt();
        //执行分解函数
        factor(n);
        //输出次数
        System.out.println(count);
    }
}

请忽略我类胡乱起的名字,大家一定不要和我一样把类名起成中文。

你可能感兴趣的:(算法)