题目描述
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
输入描述
输入包括一个整数n,(3 ≤ n < 1000)
输出描述
输出对数
示例1
输入
10
输出
2
解题代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import java.util.*;
public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int ans = 0; int n = sc.nextInt(); Set<Integer> primes = new HashSet<>(); for (int i = 2; i < n; i++) { if (isPrime(i)) { primes.add(i); } } for (Integer ele : primes) { if (primes.contains(n - ele)) { ans++; } } System.out.println(ans % 2 == 0 ? ans/2 : ans/2 + 1); } private static boolean isPrime(int num) { for (int i = 2; i < (int)Math.sqrt(num)+1; i++) { if (num % i == 0) { return false; } } return true; } }
|