利用c语言编写程序,要求如下:数值151是一个回文素数。因为151既是一个素数也是一个回文数(回文数是从前向后读和从后向前读都一样的数)。写一个程序找出所有在[a,b]区间内的回文素数(5 <= a < b <= 1000,000,000)。 输入 第一行:"%d %d" 输出 符合条件的回文素数,一个数一行。 输入样例 5 500 输出样例 5 7 11 101 131 151 181 191 313 353 373 383
时间: 2024-02-15 22:04:53 浏览: 173
好的,以下是利用C语言编写的程序,实现找出所有在[a,b]区间内的回文素数:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int n)
{
if (n <= 1)
{
return false;
}
for (int i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
return false;
}
}
return true;
}
bool is_palindrome(int n)
{
int temp = n, reversed = 0;
while (temp > 0)
{
reversed = reversed * 10 + temp % 10;
temp /= 10;
}
return n == reversed;
}
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\n", i);
}
}
return 0;
}
```
程序中使用了两个函数,一个判断一个数是否为素数,一个判断一个数是否为回文数。遍历区间内的所有数,然后依次判断是否为素数和回文数,如果同时满足,则输出该数。
程序输出结果为:
```
5
7
11
101
131
151
181
191
313
353
373
383
```
阅读全文