1. 程式人生 > >可逆素數(難度:半顆星)

可逆素數(難度:半顆星)

問題描述:

可逆素數是指該數本身是一個素數,並且把該數倒過來也是一個素數。

例如: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; }

執行結果:

這裡寫圖片描述