#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int maxx=1;
bool zhishu(int x){
if(x==0||x==1) return false;
for(int i=2;i<(x/2);i++){
if(x%i==0) return false;
}
return true;
}
int mmax(int aa,int bb){
return aa>bb?aa:bb;
}
int main(){
int sum=0;
cin>>sum;
for(int i=2;i<sum;i++){
for(int j=2;j<sum;j++){
if((i+j)==sum&&zhishu(i)&&zhishu(j)) maxx=mmax(maxx,i*j);
}
}
cout<<maxx;
}
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;int maxx=1;
int pri[10000],cnt;
bool vis[10000];
void getprime(int n)
{
for(int i=2;i<=n;i++)
{
if(!vis[i])
{
pri[cnt++]=i;
for(int j=i*i;j<=n;j+=i)
vis[j]=true;
}
}
}
bool isprime(int x,int m,int n)
{
for(int i=m;i<=n;i++)
{
if(x==pri[i]) return true;
}
return false;
}
int main()
{
int maxx=1;
int s,a,b,res;
cin>>s;
getprime(s);
//pri数组里存储了所有的质数,而且是递增,数组长度为cnt
for(int i=0;i<cnt;i++)
{
a = pri[i];
b = s - pri[i];
if(a>b) break;
if(isprime(b,i,cnt))
maxx = max(maxx,a*b);
}
cout<<maxx;
return 0;
}
这个时间复杂度更低,用的素数筛
这两段代码是用C++编写的,分别通过不同的方法找到在给定输入值内两个质数的乘积最大值。第一段使用了直接判断质数的方法,第二段利用素数筛优化了时间复杂度。它们都旨在高效地找出质数对并计算其乘积。
2674

被折叠的 条评论
为什么被折叠?



