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; } } } } } }