1224 哥德巴赫猜想(2)
Time Limit : 2000/1000 MS(Java/Others) | Memory Limit :65536/32768 KB(Java/Others)
Submits : 1564 | Solved : 629
Description
所谓哥德巴赫猜想,就是指任何一个大于2的偶数,都可以写成两个素数的和。现在输入一个偶数,要求寻找两个素数,使其和等于该偶数。由于可能有多组素数对满足条件,所以本题要求输出两数差最小的那两个素数。
Input
输入一个偶整数M,M大于2。
Output
对于每个偶数,输出两个彼此最接近的素数,并且其和等于该偶数。(输出时两个素数小的在前,大的在后)。
Sample Input
20
Sample Output
7 13
HINT
Source
NBU OJ
解题思路:最开始用的素数筛选法没过...。
AC代码:
import java.util.Scanner;public class Main {private static Scanner sc;public static void main(String[] args){int m,x=1,y=1;sc = new Scanner(System.in);int[] a=new int[1000];m=sc.nextInt();if(m==4){System.out.println(2+" "+2);}else{int min=0,max=0;for(int i=m/2;i>=0;i--){max=m-i;min=i;if(min%2!=0&&max%2!=0&&i>1){x=0;y=0;for(int j=2;j<=(int)Math.sqrt(max);j++){if(max%j==0)x=1;}for(int j=2;j<=(int)Math.sqrt(min);j++){if(min%j==0)y=1;}if(x==y&&x==0){System.out.println(min+" "+max);break;}}}}}}