算出一个数能有多少个因数
作者:
古德古德
,
2022-04-05 22:18:45
,
所有人可见
,
阅读 212
/*
先分解质因数,得到p1^a1*p2^a2*...*pn^an。则全部因数的个数为(a1+1)(a2+1)...(an+1)*
注意,必须要乘 相同的数的个数,所以我们筛完所有的数再把相同的个数相乘
不能筛一个数乘一这个数质因数的个数,因为这样可能会得到重复结果
*/
#include<bits/stdc++.h>
using namespace std;
int f[110];
int main()
{
//筛选1-100的所有数的质因数
for(int i = 1 ; i<= 100; i ++)
{
int n = i;
//晒出每个数的所有质因数
for(int j = 2; j <= n ; j++)
{
if(n % j == 0)
{
while(n % j == 0)
{
f[j]++;
n /= j;
}
}
}
if(n > 0) f[n]++;
}
long long res = 1;
//按照每个质因数顺序枚举
for(int i = 1 ; i<= 100 ;i ++)
{
res = res + res * f[i];
}
cout << res;
return 0;
}