可逆素數(難度:半顆星)
阿新 • • 發佈:2018-12-21
問題描述:
可逆素數是指該數本身是一個素數,並且把該數倒過來也是一個素數。
例如: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;
}
執行結果: