首页 > 代码库 > [Offer收割]编程练习赛12 题目1 : 歌德巴赫猜想

[Offer收割]编程练习赛12 题目1 : 歌德巴赫猜想

 

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

哥德巴赫猜想认为“每一个大于2的偶数,都能表示成两个质数之和”。

给定一个大于2的偶数N,你能找到两个质数P和Q满足P<=Q并且P+Q=N吗?

输入

一个偶数N(4 <= N <= 1000000)

输出

输出P和Q。如果有多组解,输出P最小的一组。

样例输入
10
样例输出
3 7

 

思路

判断和为N两个数是否为素数

代码

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4 
 5     public static boolean isPrim(int n) {
 6         for (int i = 2; i * i <= n; i++) {
 7             if (n % i == 0) {
 8                 return false;
 9             }
10         }
11         return true;
12     }
13 
14     public static void main(String[] args) {
15         Scanner sc = new Scanner(System.in);
16         int n = sc.nextInt();
17         for (int i = 2; i + i <= n; i++) {
18             if (isPrim(i) && isPrim(n - i)) {
19                 System.out.println(i + " " + (n - i));
20                 break;
21             }
22         }
23     }
24 }

 

[Offer收割]编程练习赛12 题目1 : 歌德巴赫猜想