[关闭]
@yexiaoqi 2022-05-20T08:39:22.000000Z 字数 673 阅读 290

HJ60. 查找组成一个偶数最接近的两个素数

刷题


题目:任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。

数据范围:输入的数据满足 4≤n≤1000
输入描述:输入一个大于2的偶数
输出描述:从小到大输出两个素数
示例

输入:20
输出:7
     13

链接:https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9


默认使用穷举;因为要求差值最小的两个,也可以从n/2向前遍历,碰到的第一个i和n-i就是要求的结果

  1. public class Main{
  2. public static void main(String[] args){
  3. Scanner sc = new Scanner(System.in);
  4. while(sc.hasNext()){
  5. int n = sc.nextInt();
  6. int min = Integer.MAX_VALUE;
  7. int a = 0;
  8. int b = 0;
  9. for(int i=2; i<n; i++){
  10. if(isPrime(i) && isPrime(n-i)){
  11. int abs = Math.abs(n-i-i);
  12. if(abs < min){
  13. a = i;
  14. b = n-i;
  15. min = abs;
  16. }
  17. }
  18. }
  19. System.out.println(a);
  20. System.out.println(b);
  21. }
  22. }
  23. public static boolean isPrime(int n){
  24. for(int i=2; i<n; i++){
  25. if(n%i == 0) return false;
  26. }
  27. return true;
  28. }
  29. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注