任务描述
本关任务:编写一个程序,求大于正整数
n
的最小的一个自然数,该数既是素数,又是回文数。
相关知识
回文数是关于数字中心对成的数,如
1234321
,121
。
编程要求
自定义一个函数
IsPrimeNumber
判断素数,自定义一个函数hws
判断回文数。从main
函数输入n
,调用IsPrimeNumber
和hws
进行判断,最后输出。
测试说明
测试输入:
100
预期输出:
101
测试输入:
200
预期输出:
313
代码实现
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int IsPrimeNumber(long n);
int hws(long n);
int main()
{
long n;
scanf("%ld", &n);
while (1)
{
if (IsPrimeNumber(n) + hws(n) == 2)
{
printf("%ld", n);
break;
}
n++;
}
return 0;
}
int IsPrimeNumber(long n)
{
for (int i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
return 0;
}
}
return 1;
}
int hws(long n)
{
int num = 0;
if (n % 10 == 0)
{
return 0;
}
while (n > num)
{
num = num * 10 + n % 10;
n /= 10;
if (n == num || n == num / 10)
{
return 1;
}
}
return 0;
}