先把n的所有因子求出来,再用三重循环遍历他的所有因子
#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
using namespace std;
typedef long long ll;
const ll n=2021041820210418;
ll sum=0;
vector<ll> arr,arr2,arr3;
int main(){
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
arr.push_back(i);
}
}
for(int i=0;i<arr.size();i++){
if(n%arr[i]==0){
arr2.push_back(n/arr[i]);
}
}
arr3.insert(arr3.end(),arr.begin(),arr.end());
arr3.insert(arr3.end(),arr2.begin(),arr2.end());
for(int i=0;i<arr3.size();i++){
for(int j=0;j<arr3.size();j++){
for(int k=0;k<arr3.size();k++){
if(arr3[i]*arr3[j]*arr3[k]==n){
sum++;
}
}
}
}
cout<<sum;
return 0;
}
补充一种费事做法
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
const long long n=2021041820210418;
long long sum=0;
int main(){
for(long long i=1;i<=sqrt(n);i++){
if(n%i==0){
long long t=n/i;
for(long long j=1;j<=sqrt(n);j++){
if(t%j==0){
long long k=t/j;
if(k>sqrt(n)&&i!=j){
sum=sum+3;
}
else if(k>sqrt(n)&&i==j){
sum=sum+3;
}
else{
sum++;
}
}
}
}
}
cout<<sum;
return 0;
}