求出100—999之间的无暇素数。使用c语言求解
时间: 2024-12-11 18:45:23 浏览: 9
使用c语言判断100以内素数的示例(c语言求素数)
在C语言中,无暇素数(也叫完美数)是指一个正整数等于其所有真因子(除了自身以外的因子)之和。例如,6是一个无暇素数,因为它的真因子有1、2和3,它们的和正好是6。下面是一个简单的C程序,用于找出100到999之间的无暇素数:
```c
#include <stdio.h>
// 判断一个数是否为素数的函数
int isPrime(int num) {
if (num <= 1) return 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return 0;
}
return 1;
}
// 判断一个数是否为无暇素数的函数
int isAbundant(int num) {
int sum = 0;
for (int i = 1; i * i <= num; i++) {
if (num % i == 0) {
if (i * i != num) sum += i + num / i; // 避免重复计算
}
}
return num == sum;
}
// 找出100至999之间的无暇素数
void findPerfectNumbers() {
for (int i = 100; i <= 999; i++) {
if (isPrime(i) && !isAbundant(i)) {
printf("%d 是无暇素数。\n", i);
}
}
}
int main() {
findPerfectNumbers();
return 0;
}
```
这个程序首先定义了两个辅助函数:`isPrime`用于判断一个数是否为素数,`isAbundant`用于检查一个数是否为无暇素数。然后在`findPerfectNumbers`函数中遍历100到999之间的数字,并利用这两个函数判断并打印出无暇素数。
阅读全文