查找组成一个偶数最接近的两个素数

题目描述

  任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。

输入描述

  输入一个偶数

输出描述

  输出两个素数

输入样例  

20

输出样例

7
13

题目分析

  首先输入的肯定是偶数,从中间开始找的话就是保证两个数差距最小,然后再分别判断两个数是不是质数,就可以了

测试代码

 1 #include <stdio.h>
 2 
 3 int isPrime(int num)
 4 {
 5     int i;
 6     if(num ==2)
 7     {
 8         return 1;
 9     }
10     if(!(num & 1) || num < 2)
11     {
12         return 0;
13     }
14     for(i =3; i * i <= num; i += 2)
15     {
16         if(num % i == 0)
17         {
18             return 0;
19         }
20     }
21     return 1;
22 }
23 
24 int main(void)
25 {
26     int num, i;
27     
28     while(scanf("%d", &num) != EOF)
29     {
30         for (i = num / 2; i; i--)
31         {
32             if (isPrime(i) && isPrime(num - i))
33             {
34                 printf("%d\n%d\n", i, num - i);
35                 break;
36             }
37         }
38     }
39     return 0;
40 }

 

posted @ 2016-07-14 11:18  新生代黑马  阅读(324)  评论(0)    收藏  举报