zoukankan      html  css  js  c++  java
  • 素数

    素数

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:1
    描写叙述

    走进世博园某信息通信馆,參观者将获得前所未有的尖端互动体验。一场充满创想和喜悦的信息通信互动体验秀将以全新形式呈现,从观众踏入展馆的第一步起。就将与手持终端密不可分。人类未来梦想的惊喜从參观者的掌上展开。

    在等候区的梦想花园中,參观者便開始了他们奇异的体验之旅,等待中的游客可利用手机等终端參与互动小游戏。与梦想剧场内的虚拟人物Kr. Kong 进行猜数比赛。当屏幕出现一个整数X时。若你能比Kr. Kong更快的发出最接近它的素数答案,你将会获得一个意想不到的礼物。

    比如:当屏幕出现22时,你的回答应是23;当屏幕出现8时。你的回答应是7;若X本身是素数,则回答X;若最接近X的素数有两个时,则回答大于它的素数。

     

    输入
    第一行:N 要竞猜的整数个数
    接下来有N行,每行有一个正整数X
    1<=N<=5 1<=X<=1000
    输出
    输出有N行。每行是相应X的最接近它的素数
    例子输入
    4
    22
    5
    18
    8
    例子输出
    23
    5
    19
    7
    来源

    第三届河南省程序设计大赛

    代码1:

     
    #include<stdio.h>
    int fun(int n)
    {
    	int i;
    	if(n==1||n==0)
    		return 0;
    	for(i=2;i<=n/2;i++)
    		if(n%i==0)
    			break;
    	if(i>n/2)
    			return 1;
    }
    int main(void)
    {
    	int n,j,m;
    	scanf("%d",&m);
    	int flag;
    	while(m--){
    		scanf("%d",&n);
             	j=1;
    			do{
    				flag=0;
    	    	  if(fun(n)==1)
    			  {
    		    	   printf("%d
    ",n);
    				   flag=1;
    			   }
    		        else 
    					if(fun(n-j)==1&&fun(n+j)==1){
    						printf("%d
    ",n+j);flag=1;}
    
    	    	    else
    					if(fun(n-j)==1){
    						printf("%d
    ",n-j);flag=1;}
                 	else
    					if(fun(n+j)==1){
    						printf("%d
    ",n+j);flag=1;}
    					j++;
    			}while(flag!=1);
    		}
    	return 0;
    }
                 

    代码2:

    #include<stdio.h>
    #define N 1010
    int num[N]={0,0};
    void prime()
    {
    	int i,j;
    	for(i=2;i<N;i++)
    		num[i]=1;
    	for(i=2;i<N;i++)
    	{
    		if(num[i]==1)
    		{
    			for(j=2*i;j<N;j=j+i)
    				num[j]=0;
    		}
    	}
    }
    int fun(int x)
    {
    	if(num[x]==1)
    		return x;
    	int high=x,low=x;
    	while(num[high]!=1)
    		high++;
    	while(num[low]!=1)
    		low--;
    	return (high-x)>(x-low)?low:high;
    }
    int main()
    {
    	int M,X;
    	prime();
    	scanf("%d",&M);
    	while(M--)
    	{
    		scanf("%d",&X);
    		printf("%d
    ",fun(X));
    	}
    	return 0;
    }
    


  • 相关阅读:
    [BJOI2019] 光线
    C# 从零开始写 SharpDx 应用 笔刷
    BAT 脚本判断当前系统是 x86 还是 x64 系统
    BAT 脚本判断当前系统是 x86 还是 x64 系统
    win2d 通过 CanvasActiveLayer 画出透明度和裁剪
    win2d 通过 CanvasActiveLayer 画出透明度和裁剪
    PowerShell 拿到显卡信息
    PowerShell 拿到显卡信息
    win10 uwp 如何使用DataTemplate
    win10 uwp 如何使用DataTemplate
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6853373.html
Copyright © 2011-2022 走看看