C – 尋找迴文質數

來源:互聯網
上載者:User

看面試經驗的時候看見了這個問題,

首先名詞解釋:

迴文數:就是一個數從前看和從後看是一樣的,比如121,12321

質數:就是一個只能被1和它自身整除.

迴文質數:就是又是迴文數又是質數.

好的,概念解釋完了,我們就寫程式了.

 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <math.h> 4 /** 5 判斷m是否為質數 6 @return 1:質數,0:不是質數 7 **/ 8 int ss(int m){ 9     for(int i=2;i<=sqrt(m);i++)10         if(! (m%i))11             return 0;12     return 1;13 }14 15 /**16 判斷m是否為迴文數17 @return 1:迴文,0:不是迴文18 **/19 int huiwen(int m){20     int x=0,y;21     y=m;22     while(y){23         x = x*10 + y % 10;24         y /= 10;25     }26     if (m==x)27         return 1;28     else29         return 0;30 }31 32 int main()33 {34     /**35     迴文質數的要求:36     1 位元必須為奇數37     2 迴文數 + 質數38     3 唯一例外:1139     **/40     // 直接列印1141     printf("迴文質數:%d\r\n",11);42     int j = 1; //基數43     int k = 3; //邊界44     int l;45     while (j < k){46         l = pow(100,j);47         for (int i=l+1;i < 10 * l;i++,i++)48             if(huiwen(i)&&ss(i))49                 printf("迴文質數:%d\r\n",i);50         j++;51     }52 }

 

為什麼要奇數位的迴文數呢?因為偶數位的迴文數註定會被11整除,所以肯定不是質數.

那麼我們這裡只需要考慮101-999,10001-99999,等等奇數位,所以可以少掉很多迴圈啦.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.