题目名称:歌德巴赫猜想
题目连接:歌德巴赫猜想
描述
哥德巴赫猜想认为“每一个大于2的偶数,都能表示成两个质数之和”。
给定一个大于2的偶数N,你能找到两个质数P和Q满足P<=Q并且P+Q=N吗?
输入
一个偶数N(4 <= N <= 1000000)
输出
输出P和Q。如果有多组解,输出P最小的一组。
样例输入
10
样例输出
3 7
解题思路
建立一个数组,使用打表的方法求出所有的素数,接下来遍历2到 N \sqrt{N} N中 数字 i 和 N-i 是否均为素数
完整代码
import java.io.*;
import java.util.*;
public class Main {
public static final Boolean[] vis=new Boolean[1000010];
public static void init(){
Arrays.fill(vis,true);
vis[0]=vis[1]=false;
vis[2]=true;
for(int i=2;i<1000000;i++) {
if(vis[i]){
for(int j=i+i;j<1000000;j+=i){
vis[j]=false;
}
}
}
}
public static void main(String[] args) throws Exception{
init();
Scanner cin=new Scanner(System.in);
int c=cin.nextInt();
for(int i=2;i<=(int)Math.sqrt(c);i++){
if(vis[i]&&vis[c-i]){
System.out.println(i+" "+(c-i));
break;
}
}
}
}