#include<stdio.h>
#include<string.h>
//素数判定
int is_prime(int n)
{
for (int i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
return 0;
}
}
return 1;
}
int prime[100];
int p[100];
int count;
int main()
{
int n;
//构造素数表
for (int i = 2; i <= 100; i++)
{
if (is_prime(i))
{
prime[count++] = i;
}
}
while (scanf("%d", &n) == 1)//重复输入
{
printf("%d! =", n);
int maxp = 0;
for (int i = 1; i <= n; i++)
{
int m = i;//暂存i
for (int j = 0; j < count; j++)
{
while (m % prime[j] == 0)//反复除以p[j]
{
m /= prime[j];
p[j]++;
if (j > maxp)//更新maxp
{
maxp = j;
}
}
}
}
for (int i = 0; i <= maxp; i++)
{
printf(" %d", p[i]);
}
printf("\n");
}
return 0;
}
因子和阶乘
最新推荐文章于 2022-01-16 13:53:49 发布