zoukankan      html  css  js  c++  java
  • C 查找回文质数

    看面试经验的时候看见了这个问题,

    首先名词解释:

    回文数:就是一个数从前看和从后看是一样的,比如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     else
    29         return 0;
    30 }
    31 
    32 int main()
    33 {
    34     /**
    35     回文质数的要求:
    36     1 位数必须为奇数
    37     2 回文数 + 质数
    38     3 唯一例外:11
    39     **/
    40     // 直接打印11
    41     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,等等奇数位,所以可以少掉很多循环啦.

  • 相关阅读:
    洛谷 P1022.计算器的改良
    洛谷 P1014.Cantor表
    洛谷 P1464.Function
    洛谷 P1426.小鱼会有危险吗
    洛谷 P2089.烤鸡
    洛谷 P1579.哥德巴赫猜想(升级版)
    洛谷 P1618.三连击(升级版)
    通过ES6写法去对Redux部分源码解读
    闲谈Hybrid
    浅谈React、Vue 部分异步
  • 原文地址:https://www.cnblogs.com/huangjacky/p/2460710.html
Copyright © 2011-2022 走看看