求一个数的约数的个数:
360=2*2*2*3*3*5=2^3+3^2+5(分解为质因数,因为当各各质因数幂不同时,就是一个不重复的约数)
那么360的约数只能为2^a*3^b*5^c2(a的范围(0-3),b的范围(0-2),c的范围(0-1)),因此360的约数有4*3*2=24个。
求100的阶乘的约数的个数:
#include<iostream>
#include<vector>
using namespace std;
int isprime[120];
void creat()
{
for(int i=2;i<=100;++i){//质数标为0;
if(!isprime[i]){
for(int k = 2*i;k<=100;k+=k){
isprime[k] = 1;
}
}
}
}
int main()
{
creat();
int p[110]={0};
for(int i=2;i<=100;++i){
int t = i;
for(int k=2;k <= 100&&t > 0;++k){
if(isprime[k])continue;
while(t%k==0){
t/=k;
p[k]++;
}
}
}
long long ans=1;
for(int i=2;i<=100;++i){
ans *= p[i]+1;
}
cout<<ans;
return 0;
}
39001250856960000个