用 c 语言 设计一个函数,输出整数 n 的所有素数因子
时间: 2024-03-24 09:41:39 浏览: 80
下面是用 C 语言设计的一个函数,实现输出整数 n 的所有素数因子的功能:
```c
#include <stdio.h>
#include <math.h>
void prime_factorization(int n) {
int i, j;
// 处理 n 中的所有 2 因子
while (n % 2 == 0) {
printf("%d ", 2);
n /= 2;
}
// 处理 n 中的所有奇数因子
for (i = 3; i <= sqrt(n); i += 2) {
while (n % i == 0) {
printf("%d ", i);
n /= i;
}
}
// 如果 n 是质数,则 n 也是一个因子
if (n > 2)
printf("%d ", n);
}
int main() {
int n = 123456;
printf("The prime factors of %d are: ", n);
prime_factorization(n);
return 0;
}
```
解释:
首先,函数 `prime_factorization()` 中的 `while (n % 2 == 0)` 循环处理 `n` 中的所有 2 因子,即将 `n` 不断除以 2 直到 `n` 不再是偶数为止,每除一次就输出一个因子 2。
然后,函数中使用一个 `for` 循环处理 `n` 中的所有奇数因子。在循环中,每次从 3 开始遍历到 $\sqrt{n}$,步长为 2(因为偶数已经在之前处理过了)。当 `n` 能够整除当前遍历到的奇数 `i` 时,就将 `n` 除以 `i`,并输出 `i` 作为一个因子。
最后,如果 `n` 是一个大于 2 的质数,则 `n` 也是一个因子,需要再输出一次。
运行上面的程序,输出为:
```
The prime factors of 123456 are: 2 2 2 2 3 643
```
表示 123456 的所有素数因子为 2,3,643。
阅读全文