素数

素 数



描述

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

输入

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

输出

输出有 N 行,每行是对应 X 的最接近它的素数。
【 约束条件】
1≤N≤5 1≤X≤1000

样例输入

4
22
5
18
8

样例输出

23
5
19

7


答案:(纯手写亲们)思路是:首先判断是否为素数,若为素数,则输出,不是素数,则判断该数的上下俩个素数,然后在比较距离大小,进行输出。亲,多多练习------波。


#include<iostream>
using namespace std;
int prime(int w)
{
int i;
for (i = 2; i < w; i++)
{
if (w%i == 0)
return 0;
}
if (i == w)
return 1;
}
void nearprime(int q)
{
int i1,i2,l1,l2;
i1 = q - 1;
i2 = q + 1;
while (i1>=2)
{
if (prime(i1))
{
l1 = i1;
break;
}
i1--;
}
while (1)
{
if (prime(i2))
{
l2 = i2;
break;
}
i2++;
}
if (q - l1 >= l2 - q)
{
printf("%d\n", l2);
}
else
printf("%d\n", l1);
}
int main()
{
int n,m;
scanf("%d", &n);
while (n--)
{
scanf("%d", &m);
if (prime(m))
printf("%d\n", m);
else
nearprime(m);
}
}



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页