题目描述
n的因子数你一定知道啦,比如6有因子1,2,3,6 我们就说div(6)=4现在我们换一个问题,我们希望计算n!拥有多少个不同的因子,比如3!=6所以我们应该输出4
输入
每行只有一个正整数n(1<=n<=100)
输出
输出n!对应的不同因子数,结果可能很大,请用64位整数存储
样例输入复制
3
样例输出复制
4
提示
提示:整数的质因子分解
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 100 + 5;
bool visited[maxn];
int is_prime[maxn];
int n, k = 0;
void init()
{
for (int i = 2; i <= n; i++)
{
if (visited[i])
{
is_prime[k++] = i;
for (int j = 2 * i; j <= n; j += i)
visited[j] = false;
}
}
}
int main()
{
cin >> n;
fill(visited + 2, visited + n + 1, true);
long long sum = 1;
init();
for (int i = 0; i < k; i++)
{
int temp = is_prime[i], num = 0;
while (n >= temp)
{
num += n / temp;
temp *= is_prime[i];
}
sum *= num + 1;
}
cout << sum << endl;
return 0;
}