请写一个程序求出从 22 到 NN 的所有素数以及半素数C语言
时间: 2024-10-03 16:03:01 浏览: 37
在C语言中,素数是指只有1和自身两个正因数的自然数,而半素数也被称为阿姆斯特朗数,其各位数字的立方之和等于该数本身。下面是一个简单的C程序,首先定义函数检查是否为素数和半素数,然后遍历给定范围内的整数:
```c
#include <stdio.h>
// 检查一个数是否为素数
int is_prime(int num) {
if (num <= 1) return 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return 0;
}
return 1;
}
// 检查一个数是否为半素数
int is_armstrong(int num) {
int sum = 0, temp = num;
while (temp != 0) {
int digit = temp % 10;
sum += pow(digit, 3); // 立方和
temp /= 10;
}
return sum == num;
}
// 主函数,打印22到NN的素数和半素数
void find_primes_and_semisquares(int start, int end) {
for (int i = start; i <= end; i++) {
if (is_prime(i)) printf("%d is a prime number.\n", i);
else if (is_armstrong(i)) printf("%d is an Armstrong number (semisquare).\n", i);
}
}
int main() {
int N = 22; // 替换为你想要的NN值
find_primes_and_semisquares(22, N);
return 0;
}
```
在这个程序中,你可以通过更改`main()`函数中的`N`变量来改变查找的范围。
阅读全文