素数距离问题

现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出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 }
View Code

 

posted on 2014-04-23 15:20  一颗向上的草莓  阅读(134)  评论(0编辑  收藏  举报