质数的和与积c++求解。

质数的和与积
题目描述
两个质数的和是S,它们的积最大是多少?
输入格式
一个不大于10000的正整数S,为两个质数的和。
输出格式
一个整数,为两个质数的最大乘积。数据保证有解。
输入输出样列
输入样例1:复制
50
输出样例1:复制
589
【耗时限制】1000ms 【内存限制】64MB

#include <iostream>
#include <cmath>

using namespace std;

bool isprime(int x)
{
    if (x < 2)
        return false;
    int n = static_cast<int>(sqrt(x));
    for (int i = 2; i <= n; i++)
        if (x % i == 0)
            return false;
    return true;
}

int main()
{
    int s, r = 0;
    cin >> s;
    for (int i = 2; i < s - 2; i++)
    {
        int j = s - i;
        if (isprime(i) && isprime(j))
        {
            int k = i * j;
            if (k > r)
                r = k;
        }
    }
    cout << r;
    return 0;
}