题解 | 查找组成一个偶数最接近的两个素数

#牛客创作赏金赛# #刷题我是认真的#

解题思路:

  • 两个点:
  • 怎么找出小于n的素数
  • 如何找出和为n且相差最小的素数
  • 如何找出小于素数,可以采用暴力求解法,适合小数据量
  • 找出和为n且相差最小的素数: 这两个有一个数肯定大于n/2,通过 isPrime(i) && isPrime(n - i) 即可确定相差最小的两个数
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        List<Integer> list = new ArrayList<>();
        for (int i = 2; i <= n; i++) {
            if (isPrime(i)) {
                list.add(i);
            }
        }

        int num1 = 0;
        for (int i = n / 2; i < n; i++) {
            if (isPrime(i) && isPrime(n - i)) {
                num1 = i;
                break;
            }
        }
        System.out.println(n - num1);
        System.out.println(num1);
    }


    public static boolean isPrime(int num) {
        for (int i = 2; i * i <= num; i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }


}

全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务