每日刷题(119)
阶乘约数
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
唯一分解定理与约数定理
C++代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e2 + 10;
int cnt[N];
int main()
{
for(int i = 1; i <= 100; i++)
{
int x = i;
for(int j = 2; j * j <= x; j++)
{
if(x % j == 0)
{
while(x % j == 0)
{
x /= j;
cnt[j]++;
}
}
}
if(x > 1)
{
cnt[x]++;
}
}
long long ans = 1;
for(int i = 1; i <= 100; i++)
{
if(cnt[i] != 0)
{
ans *= (cnt[i] + 1);
}
}
cout << ans << endl;
return 0;
}
运行结果
所以答案是:
39001250856960000
拓展:分解质因数的小代码
#include<stdio.h>
int main()
{
int n, i;
printf("\nplease input a number:\n");
scanf("%d", &n);
printf("%d = ", n);
for(i = 2; i <= n; i++)
{
while(n != i)
{
if(n % i == 0)
{
printf("%d*", i);
n = n / i;
}
else
{
break;
}
}
}
printf("%d", n);
return 0;
}