编写c程序,将n!(n的阶乘)分解成素数因子
时间: 2024-02-05 14:12:41 浏览: 70
以下是一个将n!分解成素数因子的C程序:
```c
#include <stdio.h>
void primeFactorization(int n) {
int i, j;
int primes[1000] = {0}; // 存放素数的数组
int count[1000] = {0}; // 存放素数的指数的数组
int num_primes = 0; // 素数的个数
int factor; // 因子
// 找出所有小于等于n的素数
for (i = 2; i <= n; i++) {
int is_prime = 1;
for (j = 2; j < i; j++) {
if (i % j == 0) {
is_prime = 0;
break;
}
}
if (is_prime) {
primes[num_primes++] = i;
}
}
// 对n!进行分解质因数
for (i = 0; i < num_primes; i++) {
factor = primes[i];
while (factor <= n) {
count[i] += n / factor;
factor *= primes[i];
}
}
// 输出结果
printf("%d! = ", n);
for (i = 0; i < num_primes; i++) {
if (count[i] > 0) {
printf("%d^%d", primes[i], count[i]);
if (i < num_primes - 1) {
printf(" * ");
}
}
}
printf("\n");
}
int main() {
int n;
printf("请输入一个正整数n:");
scanf("%d", &n);
primeFactorization(n);
return 0;
}
```
程序先找出所有小于等于n的素数,然后对n!进行分解质因数,最后输出结果。
阅读全文