• PAT甲级【2019年3月考题】——A1156 SexyPrimes【20】


    Sexy primes are pairs of primes of the form (p, p+6), so-named since “sex” is the Latin word for “six”. (Quoted from http://mathworld.wolfram.com/SexyPrimes.html)

    Now given an integer, you are supposed to tell if it is a sexy prime.

    Input Specification:
    Each input file contains one test case. Each case gives a positive integer N (≤108 10^810
    8
    ​​ ).

    Output Specification:
    For each case, print in a line Yes if N is a sexy prime, then print in the next line the other sexy prime paired with N (if the answer is not unique, output the smaller number). Or if N is not a sexy prime, print No instead, then print in the next line the smallest sexy prime which is larger than N.

    Sample Input 1:
    47
    Sample Output 1:
    Yes
    41
    Sample Input 2:
    21
    Sample Output 2:
    No
    23

    【声明】

      由于此题还未上PAT官网题库,故没有测试集,仅仅是通过了样例,若发现错误,感谢留言指正。

    Solution:

      这道题很简单,就是判断一下n 以及 n-6 或者 n+6是素数,不是的话,那就n++,直到满足要求

      

     1 #include <iostream>
     2 using namespace std;
     3 bool isPrime(int x)//判断是不是素数
     4 {
     5     if (x < 3)
     6         return x >= 1;
     7     for (int i = 2; i*i <= x; ++i)
     8         if (x%i == 0)
     9             return false;
    10     return true;
    11 }
    12 int isSexyPrimes(int x)//判断满不满足题目要求
    13 {
    14     if (isPrime(x))
    15     {
    16         bool fL = isPrime(x - 6), fR = isPrime(x + 6);
    17         if (fL || fR)
    18             return fL ? x - 6 : x + 6;
    19     }
    20     return -1;
    21 }
    22 int main()
    23 {
    24     int n;
    25     cin >> n;
    26     int res = isSexyPrimes(n);
    27     if (res > 0)
    28     {
    29         printf("Yes
    ");
    30         printf("%d
    ", res);
    31     }
    32     else
    33     {
    34         printf("No
    ");
    35         for (int i = n + 1; i < INT32_MAX; ++i)//另寻找大数,直至满足要求
    36         {
    37             if (isSexyPrimes(i) > 0)
    38             {
    39                 printf("%d
    ", i);
    40                 break;
    41             }
    42         }
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    删库跑路技术白皮书
    linux shell文件截取前几行,后几行,中间几行命令
    python 带参数 单步执行 (调试 pdb)
    分区助手专业版 v6.2 如何把win10系统迁移到SSD固态硬盘
    GUPPY 3.1.5 安装
    Java调用其他语言
    python代码中获取python版本号的方法
    f-Strings:Python 3格式字符串的新方法(f字符串)
    Centos 安装 pigz
    #!/usr/bin/env python与#!/usr/bin/python的区别
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11954060.html
Copyright © 2020-2023  润新知