两个质数的和是S,它们的积最大是多少?
输入一个不大于10000的正整数S,为两个质数的和。
输出一个整数,为两个质数的最大乘积。数据保证有解。
#include#include #include 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; }



