参考: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