一、题目描述
二、思路分析
题目要求便是:求n的三位因数的组合即 n=a*b*c
a b c 有多少种;
首先我们应该分析到 a b c在绝对情况下 一定是 n d的因数那那么 a b c 一定满足
n%a==0 true
n%b==0 true
n%c==0 ture
那么这个题就进一步简化成 在n的因数 有多少种组合使得n=a*b*c;
即 设集合 N={x| n%x==0 } a,b,b属于N 且 n=a*b*c
求 a b c得组合数
1.那我们首先 先求n得因数 n=2021041820210418 16位数用long
求得因数之后用set集合存起来
2.然后遍历set集合把所有因数的组合都枚举一边
3.如果符合n=a*b*c 就让记录的数加1
import java.util.Arrays;
import java.util.*;
public class D {
public static void main(String[] args) {
// 2021041820210418
long n=2021041820210418l;
HashSet<Long> list =new HashSet<>();
for (long i=1;i<=Math.sqrt(n)+1;i++){//求因数
if (n%i==0){
list.add(i);
list.add(n/i);
}
}
list.add(n);
System.out.println(list.size());
int num=0;
for (long l :list){//遍历因数
for (long w:list){
for (long h:list){
if (l*w*h==n)
num++;
}
}
}
System.out.println(num);
}
}