- #include<stdio.h>
- #include<math.h>
- int *num,*num_left,*dis;
- int t,i;
- int num_true(int n) //判断是否是素数
- {
- int j;
- if(n==1)
- return 0;
- else
- if(n==2)
- return 1;
- else
- {
- for(j=2;j<sqrt(n);j++)
- if(n%j==0)
- return 0;
- if(j>sqrt(n))
- return 1;
- }
- }
- void num_dis(int n,int i) //求出最近的素数
- {
- int j=0,k;
- int dis_left,dis_right,dist,lor;
- if(n==1)
- {
- *(num_left+i)=2;
- *(dis+i)=1;
- }
- else
- {
- j=0;
- while( num_true(n-j)!=1 )
- j++;
- dis_left=j;
- j=0;
- while( num_true(n+j)!=1 )
- j++;
- dis_right=j;
- k=dis_left <= dis_right ? 1 : 0 ;
- if(k==1)
- {
- *(dis+i)=dis_left;
- *(num_left+i)=n-dis_left;
- }
- else
- {
- *(dis+i)=dis_right;
- *(num_left+i)=n+dis_right;
- }
- }
- }
- void main()
- {
- scanf("%d",&t);
- num=(int *)malloc(t*sizeof(int));
- dis=(int *)malloc(t*sizeof(int));
- num_left=(int *)malloc(t*sizeof(int));
- for(i=0;i<t;i++)
- {
- scanf("%d",num+i);
- num_dis( *(num+i),i );
- }
- for(i=0;i<t;i++)
- printf("%d %d\\n",*(num_left+i),*(dis+i));
- }
- //该片段来自于http://www.codesnippet.cn/detail/290920136199.html
来源: http://www.codesnippet.cn/detail/290920136199.html