先毒题:
题目描述
两个质数的和是 S S S,它们的积最大是多少?
输入
一个不大于10000的正整数 S S S,为两个质数的和。
输出
一个整数,为两个质数的最大乘积。数据保证有解。
样例
输入数据 1
50
输出数据 1
589
写头文件,如果用iostream头文件的话,就 一定 \color{#000000}\mathsf{一定} 一定要再在后面加cmath头文件:
#include<iostream>
#include<cmath>
如果写万能头也可以:
#include<bits/stdc++.h>
判断质数函数,放在下面,需要可以复制:
int f(int x) {
for(int i=2;i<=sqrt(x);i++){
if(x%i==0) return 0;
}
return 1;
}
(主要是已经打了很多遍了,这次就不给观众姥爷讲函数了哈)
主函数:
int main(){
}
题目写了“两个质数的和是 S S S”,所以先定义整型变量 S S S(我这里用的是小写字母 s s s,根据个人喜好来哈)
int s;
cin >> s;
接下来是枚举,判断是否两个数都是质数,输出i*(s-i)即可。
for(int i=s/2; i>=2; i--){
if(f(i)&&f(s-i)){
cout<<i*(s-i)<<endl;
break;
}
}
return 0;
code:
#include <iostream>
#include <cmath>
using namespace std;
int f(int x) {
for(int i=2;i<=sqrt(x);i++){
if(x%i==0) return 0;
}
return 1;
}
int main(){
int s;
cin>>s;
for(int i=s/2; i>=2; i--){
if(f(i)&&f(s-i)){
cout<<i*(s-i)<<endl;
break;
}
}
return 0;
}