2020蓝桥杯阶乘约数

在这里插入图片描述

参考:https://blog.csdn.net/Mxeron/article/details/122798649

在这里插入图片描述

1的约束个数=1,
2的约数个数=2(1,2),
3的约数个数=2(1,3),
4 = 1 * 2 * 2 = 2^2,所以4的约数个数=3(1,2,4),
5 = 1 * 5,其约数个数=2(1,5),
注意,这里求的约数个数都是不同的约数个数,并且每个约数都是正约数(>=1)。
注意,1不是质数,所以质因子就不可能有1,但是1是每个数的约数,约数中又有1。

首先,使用质因数分解函数prime,计算1,2,3,…,100中每个数的质因数个数,用map存储,再求1 * 2*… * 100的约数

package test;

import java.util.HashMap;

public class MyTest {
    
    
    static HashMap<Integer,Integer> map=new HashMap<>();
    public static void main(String[] args) {
    
    
        for(int i=2;i<=100;i++){
    
    
            prime(i);
        }
        long a=1;
        for(Integer i:map.values()){
    
    
            a*=(i+1);
        }
        System.out.println(a);
    }
    public static void prime(int n){
    
    
        int a;
        for(int i=2;i<=n;i++){
    
    
            a=0;
            while(n%i==0){
    
    
                n/=i;
                a++;
            }
            if(a>0){
    
    
                map.put(i,map.getOrDefault(i,0)+a);
            }
        }
    }
}

结果为:39001250856960000

猜你喜欢

转载自blog.csdn.net/qq_41777702/article/details/125324113