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