• NYOJ 24(素数距离)


     

    素数距离问题

    时间限制:3000 ms | 内存限制:65535 KB
    难度:2
     
    描述
    现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
    如果输入的整数本身就是素数,则输出该素数本身,距离输出0
     
    输入
    第一行给出测试数据组数N(0<N<=10000)
    接下来的N行每行有一个整数M(0<M<1000000),
    输出
    每行输出两个整数 A B.
    其中A表示离相应测试数据最近的素数,B表示其间的距离。
    样例输入
    3
    6
    8
    10
    样例输出
    5 1
    7 1
    11 1
     #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #define N 1500000
    bool visit[N];
    void prim()
    {
    	int temp,i,j;
    	temp=(int)sqrt(N+0.5);
    	memset(visit,0,sizeof(visit));
    	for(i=2;i<=temp;i++)
    	if(!visit[i])
    	{
    		for(j=i*i;j<=N;j+=i)
    			visit[j]=1;
    	}
    }
    /* 
    bool is_prim(int x) 
    {  
    	int s;
    	for(s=2;s<=sqrt(1.0*x);s++) 
    		 if(x%s==0)   
    			 return false;
    	return true;
     }
     */
    int main()
    {
    	prim();
    	int T,m;int i,j=0,k; int temp1,temp2;
    	scanf("%d",&T); 
    	while(T--) 
    	{ 
    		scanf("%d",&m); 
    		 if(m==1)  
    		 {  
    			 printf("2 1\n");  
    			 continue; 
    		 } 
    		 /*
    		 for(i=m;i>1;i--) 
    		 {
    			 if( is_prim(m))
    			 {
    				 printf("%d %d\n",m,0);
    				 break;
    			 }
    			 */
    			for(j=m;j>=1;j--)
    			{
    				if(!visit[j])
    					temp2=m-j;
    				for(k=m+1;;k++)
    					if(!visit[k])	
    					{
    						temp1=k-m;
    						break;
    					}
    				if(!visit[j]&&!visit[k])
    				{
    					if(temp1>=temp2)
                                                               /*等号表示相同情况下应输出左边的*/
    
    						printf("%d %d\n",j,temp2);
    					else
    						printf("%d %d\n",k,temp1);
    					break;
    				}
    			}
    	}							 
    	return 0;
    }
    
    
                    
    
  • 相关阅读:
    XidianOJ 1073 Nunchakus
    XidianOJ 1024 2的幂次表示
    XidianOJ 1072 National Disaster
    XidianOJ 1093 一元三次方程
    中国剩余定理
    bzoj2818(欧拉函数递推)
    poj2311(博弈论,sg函数)
    contesthunter#46-A(分块)
    Tree,点分治
    poj3580(splay 毒瘤题)
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2544447.html
Copyright © 2020-2023  润新知