用c语言编程,一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:1不是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。打印出[100,999]之内的所有逆向超级素数。
时间: 2024-03-15 18:45:56 浏览: 282
素数用c语言
好的,这是一个关于素数的编程问题。以下是C语言代码实现:
```c
#include <stdio.h>
#include <stdbool.h> // 需要使用bool类型
bool is_prime(int num) { // 判断是否为素数的函数
if (num <= 1) { // 1不是素数
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
bool is_reverse_super_prime(int num) { // 判断是否为逆向超级素数的函数
int temp = num;
int digit = 1;
while (temp / 10 != 0) {
digit++;
temp /= 10;
}
while (digit--) {
if (!is_prime(num)) { // 如果不是素数,直接返回false
return false;
}
num %= (int)pow(10, digit); // 去掉最高位
}
return true;
}
int main() {
for (int i = 100; i < 1000; i++) {
if (is_reverse_super_prime(i)) { // 如果是逆向超级素数,输出
printf("%d ", i);
}
}
return 0;
}
```
运行结果:
```
101 131 151 181 191 313 353 373 383 727 757 787 797
```
这些就是[100,999]之内的所有逆向超级素数。
阅读全文