题解 B2134 【质数的和与积】
\text{Problems}
两个质数的和是
\text{Answer}
可以考虑先确定一个质数
考虑如何判断质数。
首先要知道什么是质数。
质数是指在大于
那么可以打出代码:
bool check(int n)
{
for(int i=2;i<=n;++i)//从2枚举到n
if(n%i==0)//如果有n的因数
return false;//则不是质数
return true;//是质数
}
但是这样的方法不够优,复杂度为
考虑优化复杂度。
当
但是当
#include<bits/stdc++.h>
using namespace std;
int S;
int ma;
bool check(int n)
{
if(n<2) return false;//特判0,1
for(int i=2;i*i<=n;++i)
if(n%i==0)
return false;
return true;
}
int main()
{
cin>>S;
for(int i=1;i<=S;++i)
if(check(i))
if(check(S-i))
if(i*(S-i)>ma)//找最大值
ma=i*(S-i);
cout<<ma;
return 0;
}