素数距离问题
现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0
题目详情 http://acm.nyist.net/JudgeOnline/problem.php?pid=24
1 #include<stdio.h> 2 int prime(int n)//调用函数判断是否为素数 3 { 4 for(int i=2;i*i<=n;i++) 5 if(n%i==0) 6 return 0; 7 return 1; 8 } 9 10 int main() 11 { 12 int d1,d2,i,j,n,m; 13 scanf("%d",&n); 14 while(n--) 15 { 16 scanf("%d",&m); 17 if(m==1)//对输入是1的情况单独说明 18 printf("2 1\n"); 19 else 20 { 21 for(i=m;i>=2;i--) 22 if(prime(i)) 23 break; 24 for(j=m;j<=(2*m);j++) 25 if(prime(j)) 26 break; 27 if(m-i<=j-m) 28 printf("%d %d\n",i,m-i); 29 else if(m-i>j-m) 30 printf("%d %d\n",j,j-m); 31 } 32 } 33 return 0; 34 }