氵题,基本的判断回文数和素数的方法()
题目
很简单的题目,要求在给定范围内找到既是回文数又是素数的数
输入输出
没什么问题
对于此题,我们可以写两个函数,一个用来判断是否是回文数,另一个用来判断是否是素数,前者我的方法是运用长度不断取模除10,后者自然的奇偶讨论
开始
#include <stdio.h>
//素数判断
int is_prime(long a)
{
if (a < 2)
return 0;
if (a == 2)
return 1;
if (a % 2 == 0)
return 0;
//以上跳过所有偶数(除2)
for (long i = 3; i * i <= a; i += 2)
{
if (a % i == 0)
return 0;
}
return 1;
}
//回文数判断
int is_palin(long a)
{
long original = a;
int reversed = 0;
while (a > 0)
{
reversed = reversed * 10 + a % 10;
a /= 10;
}
return reversed == original;
}
int main()
{
long a = 0;
long b = 0;
scanf("%ld %ld", &a, &b);
for (long i = a; i < b + 1; i++)
{
if (is_prime(i) && is_palin(i))
{
printf("%ld\n", i);
}
}
return 0;
}
实际上,关于素数判断,在面临大范围的情况下,我们还可以用素数的性质来快速判断,与6的倍数有关,此处就不用了。
最后,附上AC

780

被折叠的 条评论
为什么被折叠?



