编写c程序,将n!(n的阶乘)分解成素数因子
时间: 2024-02-05 18:12:35 浏览: 76
C语言实现素因子分解
以下是将n!(n的阶乘)分解成素数因子的C程序:
```c
#include <stdio.h>
int main() {
int n, i, j, num;
int prime[1000] = {2}; // 记录素数
int count[1000] = {0}; // 记录素数的次数
printf("请输入一个正整数n:");
scanf("%d", &n);
// 将2~n中的素数存储在prime数组中
num = 1;
for (i = 3; i <= n; i += 2) {
int is_prime = 1;
for (j = 0; j < num; j++) {
if (i % prime[j] == 0) {
is_prime = 0;
break;
}
}
if (is_prime) {
prime[num] = i;
num++;
}
}
// 计算n!中每个素数的次数
for (i = 0; i < num; i++) {
for (j = 1; j <= n; j++) {
int k = j;
while (k % prime[i] == 0) {
count[i]++;
k /= prime[i];
}
}
}
// 输出结果
printf("%d! = ", n);
for (i = 0; i < num; i++) {
if (count[i] != 0) {
printf("%d^%d ", prime[i], count[i]);
}
}
printf("\n");
return 0;
}
```
运行程序后,输入一个正整数n,程序会将2~n中的素数存储在prime数组中,并计算n!中每个素数的次数,最后输出结果。例如,当n=10时,输出结果为:
```
10! = 2^8 3^4 5^2 7^1
```
表示10!可以分解成2的8次方、3的4次方、5的2次方和7的1次方的乘积。
阅读全文