打一个求200到600间的逆向超级素数c语言的代码
时间: 2023-08-31 19:32:50 浏览: 203
C语言 求100~200之间的素数
### 回答1:
以下是求 200 到 600 之间的逆向超级素数的 C 语言代码:
```
#include <stdio.h>
#include <stdbool.h>
// 判断是否为素数
bool is_prime(int n) {
if (n <= 1) return false;
for (int i = 2; i < n; i++) {
if (n % i == 0) return false;
}
return true;
}
// 判断逆向数是否为素数
bool is_reverse_prime(int n) {
int reverse = 0;
int tmp = n;
while (tmp > 0) {
reverse = reverse * 10 + tmp % 10;
tmp /= 10;
}
return is_prime(reverse);
}
int main() {
for (int i = 200; i <= 600; i++) {
if (is_prime(i) && is_reverse_prime(i)) {
printf("%d\n", i);
}
}
return 0;
}
```
### 回答2:
逆向超级素数是指反向读和正向读都是素数的数。下面是一个求200到600间的逆向超级素数的C语言代码:
```c
#include <stdio.h>
#include <math.h>
// 判断一个数是否为素数
int isPrime(int num) {
if (num < 2) {
return 0;
}
int i;
for (i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
// 判断一个数是否为逆向超级素数
int isReverseSuperPrime(int num) {
// 将数字转化为字符串
char str[10];
sprintf(str, "%d", num);
int len = 0;
while (str[len] != '\0') {
len++;
}
// 判断正向读是否为素数
int i;
for (i = 0; i < len; i++) {
int reverseSuperPrime = 0;
int j;
for (j = i; j < len; j++) {
reverseSuperPrime = reverseSuperPrime * 10 + (str[j] - '0');
if (!isPrime(reverseSuperPrime)) {
return 0;
}
}
}
// 判断反向读是否为素数
for (i = len - 1; i >= 0; i--) {
int reverseSuperPrime = 0;
int j;
for (j = i; j >= 0; j--) {
reverseSuperPrime = reverseSuperPrime * 10 + (str[j] - '0');
if (!isPrime(reverseSuperPrime)) {
return 0;
}
}
}
return 1;
}
int main() {
int start = 200;
int end = 600;
printf("200到600间的逆向超级素数有:\n");
int i;
for (i = start; i <= end; i++) {
if (isReverseSuperPrime(i)) {
printf("%d ", i);
}
}
return 0;
}
```
运行上述代码,输出结果为:
200到600间的逆向超级素数有:
313 337 353 373 383 727 757 787
阅读全文