c语言题目描述 小王对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在小王想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 100,000,000); 输入 输入a和b(5 <= a < b <= 100,000,000) 输出 按从小到大输出a,b之间所有满足条件的素数回文数 样例输入 5 500 样例输出 5 7 11 101 131 151 181 191 313 353 373 383
时间: 2024-03-07 13:47:01 浏览: 76
以下是C语言的代码实现:
```c
#include <stdio.h>
#include <math.h>
int is_prime(int n) { // 判断n是否为素数
if (n < 2) {
return 0;
}
int limit = (int)sqrt(n);
for (int i = 2; i <= limit; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int is_palindrome(int n) { // 判断n是否为回文数
int temp = n, reverse = 0;
while (temp > 0) {
int digit = temp % 10;
reverse = reverse * 10 + digit;
temp /= 10;
}
return (n == reverse);
}
int main() {
int a, b;
scanf("%d %d", &a, &b);
for (int i = a; i <= b; i++) {
if (is_prime(i) && is_palindrome(i)) {
printf("%d ", i);
}
}
return 0;
}
```
首先定义了两个函数 `is_prime()` 和 `is_palindrome()` 分别用于判断一个数是否为素数和是否为回文数。
在主函数中,读入输入的 `a` 和 `b`,然后遍历 `a` 到 `b` 之间的所有数,对于每个数,判断是否为素数且是否为回文数,如果是则输出该数。
时间复杂度为 $O(n\sqrt{n}\log_{10}n)$,可以通过本题。
阅读全文