#include <stdio.h> #include <stdbool.h> #include <math.h> bool is_prime(int n) { if (n <= 1) { return false; } for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) { return false; } } return true; } bool is_super_prime(int n) { while (n > 0) { if (!is_prime(n)) { return false; } n /= 10; } return true; } int main() { int n = 3; int num = pow(10, n); for (int i = 2; i < num; i++) { if (is_super_prime(i)) { printf("%d\n", i); } } return 0;}
时间: 2024-02-14 21:17:00 浏览: 69
这段代码也是用C语言实现输出超级质数的功能,只不过它是通过检查一个数的每个位数是否都是质数来判断这个数是否是超级质数。具体实现如下:
```c
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
bool is_prime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
bool is_super_prime(int n) {
while (n > 0) {
if (!is_prime(n % 10)) {
return false;
}
n /= 10;
}
return true;
}
int main() {
int n = 3;
int num = pow(10, n);
for (int i = 2; i < num; i++) {
if (is_super_prime(i)) {
printf("%d\n", i);
}
}
return 0;
}
```
这个程序会输出从2到999之间的所有超级质数。这里的 `is_super_prime()` 函数会检查一个数的每个位数是否都是质数,如果是则返回 `true`,否则返回 `false`。程序通过循环遍历从2到999之间的所有数字,对每个数字调用 `is_super_prime()` 函数进行判断,如果是超级质数则输出。
阅读全文