题目描述
两个质数的和是S,它们的积最大是多少?
输入
一个不大于10000的正整数S,为两个质数的和。
输出
一个整数,为两个质数的最大乘积。数据保证有解。
#include <iostream>
#include<cstdlib>
#include<iomanip>
using namespace std;
int gcd(int a, int b)
{
if (b == 0) return a;
return gcd(b, a % b);
}
bool isprime(int n)
{
int i = 2;
if (n == 1)return 0;
for (; i <= n - 1; i++)
{
if (n % i == 0)return 0;
}
if (i == n)return 1;
}
int main()
{
int n;
cin >> n;
int maxv = 0, a, b;
int s = (n-1) / 2+1;
b = s;
a = n - s;
int maxa, maxb;
while (a >= 1 && b <= n)
{
if (isprime(a) && isprime(b)) { maxv = max(maxv, a * b); }
a--; b++;
}
cout << maxv;
}