普及組模擬測試-3.猜數比賽

33、猜數比賽(prime.cpp/c/pasprime.cpp/c/pas
成都科技館引入了一個智能對話機器人AliceAlice,該機器人引起了很多小朋友的興趣。
小朋友可以利用手機等終端參與互動小遊戲,與AliceAlice進行猜數比賽。當屏幕出現一個整數X時,若你能比AliceAlice更快地發出最接近它的素數答案,你將會獲得一個意想不到的禮物。
例如:當屏幕出現2222時,你的回答應是2323;當屏幕出現88時,你的回答應是77;若XX 本身是素數,則回答X;若最接近X的素數有兩個時,則回答大於它的素數。

【輸入格式】
輸入文件名爲prime.inprime .in
輸入文件的第一行,一個正整數n,表示要競猜的整數個數。
接下來的nn行,每行一個正整數X。

【輸出格式】
輸出文件名爲prime.outprime.out
輸出文件有nn行,每行一個整數,表示與對應X的最接近它的素數。

【輸入樣例1】prime.inprime. in

4 
22 
5 
18 
8 

【輸出樣例1】prime.outprime.out

23  
5  
19  
7 

【數據規模與約定】
對於30%30\%的數據:n10000,X10000n≤10000,X≤10000
對於100%100\%的數據:n100000,X1000000n≤100000,X≤1000000

題解

#include<bits/stdc++.h>
using namespace std;
int prime(int m)
{
    int i;
    if(m<2)return 0;
    for(i=2;i*i<=m;i++)
        if(m%i==0)
            return 0;
        return 1;
}
int main()
{
	freopen("prime.in","r",stdin);
	freopen("prime.out","w",stdout);
    int n,x;
    scanf("%d",&n);
    while(n--) //找最近素數
    {
        int l=0;
        scanf("%d",&x);
        while(1)
        {
            if(prime(x+l))
            {
				printf("%d\n",x+l);
				break;
			}
            else 
			if(x-l>1&&prime(x-l)) 
            {
				printf("%d\n",x-l);
				break;
			}
            l++;
        }
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章