【题目链接】
ybt 1405:质数的和与积
OpenJudge NOI 2.1 7827:质数的和与积
OpenJudge NOI 小学奥数 7827:质数的和与积
【题目考点】
1. 枚举
【解题思路】
两个质数的和是s,如果较小的数为i,那么较大的数为s-i。
i的可行的范围为2~s/2。
i从2循环到s/2,如果i与s-i都是质数,那么求一下二者的乘积,乘积取最大值。
【题解代码】
解法1:通过比较求最大值
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int n)
{
for(int i = 2; i <= sqrt(n); ++i)
if(n % i == 0)
return false;
return true;
}
int main()
{
int s, mx = 0;
cin >> s;
for(int i = 2; i <= s/2 ; ++i)
{
if(isPrime(i) && isPrime(s - i))
{
if(i * (s-i) > mx)
mx = i * (s-i);
}
}
cout << mx;
return 0;
}
解法2:使用max函数求最大值
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int n)
{
for(int i = 2; i <= sqrt(n); ++i)
if(n % i == 0)
return false;
return true;
}
int main()
{
int s, mx = 0;
cin >> s;
for(int i = 2; i <= s/2 ; ++i)
if(isPrime(i) && isPrime(s - i))
mx = max(mx, i*(s-i));
cout << mx;
return 0;
}