zoukankan      html  css  js  c++  java
  • 《算法竞赛入门经典》4.13应用举例-孪生素数

     1 //例题4-2
     2 /*
     3 *如果n和n+2都是素数,则称它们是孪生素数。输入m,输出两个数均不超过m的最大孪生素数。5<=m<=100。例如m=2时答案是17、19,m=1000时答案是881、883。
     4 */
     5 
     6 //程序4-2 孪生素数(1)
     7 #include <stdio.h>
     8 /* do NOT use this if x is very large or small
     9 *n太小时n=1会被错误地判断为素数,太大时i*i可能溢出
    10 */
    11 //判断素数
    12 int is_prime(int x)
    13 {
    14     int i;
    15     for(i = 2; i*i <= x; i++)    //判断不超过sqrt(x)的整数i
    16         if(x % i ==0) return 0; //一旦发现有一个大于1的因子,立刻返回0(假)
    17     return 1;                    //最后返回1(真)
    18 }
    19 
    20 int main()
    21 {
    22     int i, m;
    23     scanf("%d", &m);
    24     for(i = m-2; i >= 3; i--)
    25         if(is_prime(i) && is_prime(i+2))
    26         {
    27             printf("%d %d
    ", i, i+2);
    28             break;
    29         }
    30     return 0;
    31 }
    32 
    33 //程序4-2 孪生素数(2)
    34 #include <stdio.h>
    35 #include <math.h>
    36 #include <assert.h>
    37 //判断素数
    38 int is_prime(int x)
    39 {
    40     int i, m;
    41     assert(x >= 0);    //assert.h宏限制非法函数调用,当x>=0不成立时程序异常终止并给出提示消息
    42     if(x == 1) return 0;
    43     m = floor(sqrt(x) + 0.5);    //避免每次重复计算sqrt(x)和浮点误差
    44     for(i = 2; i*i <= x; i++)    //判断不超过sqrt(x)的整数i
    45         if(x % i ==0) return 0; //一旦发现有一个大于1的因子,立刻返回0(假)
    46     return 1;                    //最后返回1(真)
    47 }
    48 
    49 int main()
    50 {
    51     int i, m;
    52     scanf("%d", &m);
    53     for(i = m-2; i >= 3; i--)
    54         if(is_prime(i) && is_prime(i+2))
    55         {
    56             printf("%d %d
    ", i, i+2);
    57             break;
    58         }
    59     return 0;
    60 }
    亲爱的读者:如果觉得本文对你有所帮助,请点击推荐,分享给其他人!
  • 相关阅读:
    Shooting Algorithm
    Subgradient Algorithm
    Factorization Machine
    支持向量机
    Hashing Trick
    Science上发表的超赞聚类算法
    Contractive Auto-Encoder
    Shell之数学计算
    牛顿方法(Newton-Raphson Method)
    泊松回归(Poisson Regression)
  • 原文地址:https://www.cnblogs.com/zhuangwei/p/5246037.html
Copyright © 2011-2022 走看看