c语言编写程序,输出一个整数的全部素数因子。要求判断是否为素数调用刚刚的prime()函数,如整数120的素数因子为2、2、2、3、5。
时间: 2024-03-23 12:37:53 浏览: 18
好的,这个问题其实有两个子问题需要解决:
1. 如何判断一个数是否为素数?
可以使用一个名为prime()的函数来判断一个数是否为素数。具体实现如下:
```c
int prime(int n) {
int i;
for (i = 2; i <= n / 2; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
```
该函数的参数为待判断的数n,返回值为1或0,表示n是否为素数。函数的实现方法是从2开始循环到n/2,依次判断n能否被2到n/2之间的任意整数整除,如果能,则说明n不是素数,返回0;否则说明n是素数,返回1。
2. 如何输出一个整数的全部素数因子?
可以使用如下代码实现:
```c
void prime_factors(int n) {
int i;
for (i = 2; i <= n; i++) {
while (n % i == 0 && prime(i)) {
printf("%d ", i);
n /= i;
}
}
}
```
该函数的参数为待分解的数n,实现方法是从2开始循环到n,依次判断n能否被2到n之间的任意素数整除,如果能,则输出该素数,并将n除以该素数后继续判断,直到n不能再被分解为止。
完整代码如下:
```c
#include <stdio.h>
int prime(int n) {
int i;
for (i = 2; i <= n / 2; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
void prime_factors(int n) {
int i;
for (i = 2; i <= n; i++) {
while (n % i == 0 && prime(i)) {
printf("%d ", i);
n /= i;
}
}
}
int main() {
int n = 120;
printf("The prime factors of %d are: ", n);
prime_factors(n);
printf("\n");
return 0;
}
```
输出结果为:The prime factors of 120 are: 2 2 2 3 5