赞
踩
问题描述:
可逆素数是指该数本身是一个素数,并且把该数倒过来也是一个素数。
例如:1091是一个素数,把它倒过来1901也是一个素数,所以我们就说1091是一个可逆素数(同理1901也是一个可逆素数)
输出所有范围在【1000,9999】并且各位数之和是11的整数倍的可逆素数。
参考代码:
#include <stdio.h>
int IsPrime(int n)
{//判断n是否为质数,如果是返回1,否则返回0
if (n < 2)
return 0;
int i;
for (i = 2; i * i <= n; i++)//这个地方的遍历范围是【2,sqrt(n)】,这里不想用开根号,所以改成了i * i <= n
{
if (n % i == 0)
return 0;
}
return 1;
}
int main()
{
int i, temp, num = 0, sum = 0;
for (i = 1000; i <= 9999; i++)
{
temp = i;
sum = num = 0;
while (temp)
{
sum += temp % 10;
num = 10 * num + temp % 10;
temp /= 10;
}
if (IsPrime(i) && IsPrime(num) && sum % 11 == 0)
printf("%d\n", i);
}
return 0;
}
运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。