本文共 1221 字,大约阅读时间需要 4 分钟。
为了求解给定两个质数的和S,找出它们的最大乘积,我们可以采用以下步骤:
以下是优化后的解决方案:
这种方法确保了在合理的时间内找到最大的乘积,适用于给定的约束条件。
#include#include using namespace std;int main() { int S; cin >> S; vector prime(S + 1, true); prime[0] = prime[1] = false; for (int i = 2; i * i <= S; ++i) { if (prime[i]) { for (int j = i * i; j <= S; j += i) { prime[j] = false; } } } int max_product = 0; for (int p = 2; p <= S / 2; ++p) { if (prime[p]) { int q = S - p; if (q >= 2 && prime[q]) { int product = p * q; if (product > max_product) { max_product = product; } } } } cout << max_product << endl; return 0;}
prime,标记每个数是否为质数。这种方法高效且准确,能够在合理时间内解决问题,确保找到最大的乘积。
转载地址:http://dojfk.baihongyu.com/