【1405】质数的和与积

【问题描述】
两个质数的和是S,它们的积最大是多少?
【输入格式】:
一个不大于10000的正整数S,为两个质数的和。
【输出格式】:
一个整数,为两个质数的最大乘积。数据保证有解。
【输入样例】:
50
【输出样例】:
589
【参考程序】

#include 
#include 
#include 				  // 使用sqrt()须调用cmath库 
using namespace std;

bool sh(int x) {				  // 判断素数 
	if (x == 2) {
		return true;
	} 
	for (int i=2; i<=sqrt(x); i++) {
		if (x % i == 0) {
			return false;
		}
	}
	
	return true;
} 

int main() {
	int s;
	cin >> s;
	
	for (int i=s/2; i>=2; i--) {	// 和为定值的两个数,越接近积越大,故从中间开始拆分 
		if (sh(i) && sh(s-i)) {
			cout << i * (s-i) << endl;
			break;
		} 
	} 
	
	return 0;
}


你可能感兴趣的:(信奥一本通,函数)