首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言求 10000 以內所有迴文質數 (質數與迴文數雙重判斷)

     編輯:關於C

結合質數判斷 isPrimer() 與迴文數判斷 isPalindrome(),遍歷 2~9999 找出同時滿足兩個條件的數(迴文質數)。注意原碼邏輯有誤:isPalindrome(isPrimer(i)) 應為 isPalindrome(i)。

修正後邏輯

  1. isPrimer(n):試除法至 n/2,質數回傳 n,否則 0。
  2. isPalindrome(m):同上文迴文判斷。
  3. 主迴圈:if (isPrimer(i) && isPalindrome(i)) 輸出。

修正程式碼

#include <stdio.h>

int isPrimer(int n);
int isPalindrome(int m);

int main() {
    for (int i = 2; i < 10000; i++)
        if (isPrimer(i) && isPalindrome(i))
            printf("迴文質數:%d\n", i);
    return 0;
}

int isPrimer(int n) {
    for (int i = 2; i <= n/2; i++)
        if (n % i == 0) return 0;
    return n;
}

int isPalindrome(int m) {
    if (m < 10) return 0;
    int a[5], i=0, num=m;
    while (m) { a[i++] = m%10; m/=10; }
    for (int j=i-1; j>=0; j--)
        if (a[j] != num%10) return 0;
        else num/=10;
    return 1;
}

輸出範例

已知迴文質數

10000 以內的迴文質數有:2, 3, 5, 7, 11, 101, 131, 151, 181, 191, 313, 353, 373, 383, 727, 757, 787, 797, 919, 929, 10301...(超過 10000 止)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved