for(int i =0; i*i < n; i++){if(n % i ==0){
这里包含因子相同和不同的情况根据自己的实际需要来判断
}}
答案
publicstaticvoidmain(String[] args){long n =2021041820210418L;long[] nums =newlong[1000];// 这里先设置大一点儿,打印出nums后看看是否被占满int len =0;for(long i =1; i * i <= n; i++){// i 为 long 类型if(n % i ==0){
nums[len++]= i;// 其中i为n因子if(i != n / i){// 如果两个因子不一样就把另外一个因子加进去
nums[len++]= n / i;}}}long cnt =0;for(int i =0; i < len; i++){// 遍历所有因子for(int j =0; j < len; j++){if(nums[i]* nums[j]> n){// 边界条件,大于n之后后续所有的都不用再考虑了continue;}for(int k =0; k < len; k++){if(nums[i]* nums[j]* nums[k]== n){
cnt++;// 都满足之后解决方案加一}}}}System.out.println(cnt);}