题目描述
两个质数的和是 S,它们的积最大是多少?
输入格式
一个不大于 10000 的正整数 S,为两个质数的和。
输出格式
一个整数,为两个质数的最大乘积。数据保证有解。
思路
同样用自定义函数,从2开始,遍历到S,判断2~S间的质数与另一个质数,将最大的积存入变量,输出
代码
#include<iostream>
#include<cmath>
using namespace std;
bool an(long long num){//同样判断是否为质数
if(num==1) return false;
if(num==2) return true;
for(int j=2;j<=sqrt(num);j++){
if(num%j==0) return false;
}
return true;
}
int main(){
int a,b=0;
cin>>a;
for(int i=2;i<=a;i++){
if(an(i)&&an(a-i)&&i*(a-i)>b){//判断i和a-i是否为质数且最大
b=i*(a-i);//如是就存下来
}
}
cout<<b<<endl;
return 0;
}