两个质数的和是S,它们的积最大是多少?

问题 A: 质数的和与积
题目描述
两个质数的和是S,它们的积最大是多少?

输入
一个不大于10000的正整数S,为两个质数的和。

输出
输出一个整数,为两个质数的最大乘积。

样例输入
50

样例输出
589

2个数乘积最大 说明2个数比较接近,可以考虑从s/2往1的时候遍历,如果质数m,判断一下s-m是不是质数,第一组满足条件的就是乘积最大的。java版的 你自己改一下

public static void main(String[] args) {

        int s = 50;
        for (int i = s / 2; i >=2; i--) {
            if (isPrime(i)){
               if (isPrime(s-i)){
                   System.out.println(i + "*" + (s-i) + "=" + (i*(s-i)));
                   break;
               }
            }
        }
    }

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