1)编写函数数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0。 (2)编写程序,输出一个整数的全部素数因子。要求判断是否为素数调用第2题中的prime()函数。如整数120的素数因子为2、3、5。
时间: 2024-12-21 15:23:48 浏览: 41
(1) 判断一个数字`m`是否为素数,我们可以使用经典的算法之一,即试除法。对于每个小于`sqrt(m)`的数,如果`m`能被这个数整除,则`m`不是素数。这里是一个简单的C语言函数实现:
```c
#include <stdbool.h>
#include <math.h>
// 定义一个函数来检查m是否为素数
int prime(int m) {
if (m <= 1) {
return 0;
}
for (int i = 2; i <= sqrt(m); i++) {
if (m % i == 0) { // 如果有因子,说明不是素数
return 0;
}
}
return 1; // 没有找到因子,因此它是素数
}
```
(2) 为了找出一个整数`n`的所有素数因子,我们需要遍历从2到`sqrt(n)`的每一个数,对每个数进行测试。如果`n`能被当前数整除,那么就输出该数(因为它是个因子),然后更新`n`为`n`除以该因子的结果,继续寻找下一个因子。直到`n`变成1为止,因为此时已经找到了所有因子。以下是一个完整的程序示例:
```c
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
bool prime(int m);
void print_prime_factors(int n);
int main() {
int num = 120;
printf("Prime factors of %d: ", num);
print_prime_factors(num);
return 0;
}
// 函数定义
bool prime(int m) {
// ... 使用上述prime()函数实现 ...
}
void print_prime_factors(int n) {
for (int i = 2; i <= sqrt(n); i++) {
while (n % i == 0 && prime(i)) { // 如果i是素数且n能被整除
printf("%d ", i); // 输出素数因子
n /= i; // 更新n为n除以i的结果
}
}
if (n > 1) { // 可能还有质因数n本身
printf("%d", n);
}
printf("\n");
}
```
运行这个程序,会输出120的素数因子。
阅读全文
相关推荐















