• 素 数 (第三届省赛)


    素 数

    (这道题我们写的挺麻烦的, 耗时4MS  , 代码比较暴力, 先判断这个数是不是素数,若不是则判断两边的数是不是素数, 还好相邻两个素数差值不大, 不然肯定会超限的)

    题目描述

    走进世博园某信息通信馆,参观者将获得前所未有的尖端互动体验,一场充满创想和喜悦的信息通信互动体验秀将以全新形式呈现,从观众踏入展馆的第一步起,就将与手持终端密不可分,人类未来梦想的惊喜从参观者的掌上展开。
    在等候区的梦想花园中,参观者便开始了他们奇妙的体验之旅,等待中的游客可利用手机等终端参与互动小游戏,与梦想剧场内的虚拟人物Kr. Kong进行猜数比赛。当屏幕出现一个整数X时,若你能比Kr. Kong更快的发出最接近它的素数答案,你将会获得一个意想不到的礼物。
    例如:当屏幕出现22时,你的回答应是23;当屏幕出现8时,你的回答应是7;若X本身是素数,则回答X;若最接近X的素数有两个时,则回答大于它的素数。

    输入

    第一行: N 要竞猜的整数个数
    接下来有N行, 每行有一个正整数 X

    输出

    输出有N行,每行是对应X的最接近它的素数。

    样例输入

    4
    22
    5
    18
    8

    样例输出

    23
    5
    19
    7

    提示

    1≤N≤5 1≤X≤1000

     1 #include <stdio.h>
     2 #include <math.h>
     3 #include <string.h>
     4  
     5 int isprime(int n);
     6  
     7 int main()
     8 {
     9     int n, x, i;
    10     scanf("%d", &n);
    11     while(n--)
    12     {
    13         scanf("%d", &x);
    14         if(x%2==0 && x!=2)
    15         {
    16             for(i = 0; ; i++)
    17             {
    18                 if(isprime(i+x)==1 || isprime(x-i)==1)
    19                 {
    20                     if(isprime(x+i)==1)
    21                         printf("%d
    ", x+i);
    22                     else
    23                         printf("%d
    ", x-i);
    24                     break;
    25                 }
    26             }
    27  
    28         }
    29         else
    30         {
    31             if(isprime(x)==1)
    32                 printf("%d
    ", x);
    33             else
    34             {
    35                 for(i = 0; ; i+=2)
    36                 {
    37                     if(isprime(i+x)==1 || isprime(x-i)==1)
    38                     {
    39                         if(isprime(x+i)==1)
    40                             printf("%d
    ", x+i);
    41                         else
    42                             printf("%d
    ", x-i);
    43                         break;
    44                     }
    45                 }
    46             }
    47         }
    48     }
    49     return 0;
    50 }
    51 int isprime(int n)
    52 {
    53     if(n < 2) return 0;
    54     for(int i = 2; i*i <= n; ++i)
    55     {
    56         if(n%i == 0)
    57             return 0;
    58     }
    59     return 1;
    60 }
  • 相关阅读:
    centos安装字体
    【C++ Primer | 15】访问控制与继承、继承中的类作用域
    树与二叉树 | 哈夫曼树
    【C++ Primer | 10】泛型算法
    【APUE | 03】文件I/O
    二叉树
    图论算法
    【深度探索C++对象模型 | 02】构造函数语意学
    【APUE | 08】进程控制
    c++重点理解
  • 原文地址:https://www.cnblogs.com/yishilin/p/4471600.html
Copyright © 2020-2023  润新知