编写C语言程序,写一个函数,函数名叫getJie,用于实现功能:将n!(n的阶乘)分解成素数因子。尽量用二维数组,变量名尽可能短
时间: 2024-05-06 13:17:00 浏览: 56
C语言求n的阶乘(n!).txt
以下是一个用二维数组实现的getJie函数,其中使用了i和j作为循环变量名:
```c
#include <stdio.h>
#define MAX 100
void getJie(int n)
{
int i, j, k, flag, num;
int a[MAX][2] = {0};
for (i = 2; i <= n; i++) {
num = i;
for (j = 2; j <= num; j++) {
flag = 0;
while (num % j == 0) {
flag = 1;
num /= j;
}
if (flag) {
for (k = 0; k < MAX; k++) {
if (a[k][0] == j) {
a[k][1]++;
break;
} else if (a[k][0] == 0) {
a[k][0] = j;
a[k][1] = 1;
break;
}
}
}
}
}
printf("%d! = ", n);
for (i = 0; i < MAX; i++) {
if (a[i][0] == 0) {
break;
}
printf("%d^%d ", a[i][0], a[i][1]);
}
printf("\n");
}
int main()
{
int n;
printf("请输入一个整数n:\n");
scanf("%d", &n);
getJie(n);
return 0;
}
```
该函数首先定义了一个二维数组a,用于保存素数因子和其对应次数。接着使用两个循环变量i和j来遍历n!的每个因子,其中内层循环使用flag标记是否存在该因子,如果存在则将其加入到数组a中。最后遍历数组a,并打印出每个素数因子及其对应次数。
阅读全文