问题 A: 质数的和与积
题目描述
两个质数的和是S,它们的积最大是多少?
输入
一个不大于10000的正整数S,为两个质数的和。
输出
输出一个整数,为两个质数的最大乘积。
样例输入
50
样例输出
589
2个数乘积最大 说明2个数比较接近,可以考虑从s/2往1的时候遍历,如果质数m,判断一下s-m是不是质数,第一组满足条件的就是乘积最大的。java版的 你自己改一下
public static void main(String[] args) {
int s = 50;
for (int i = s / 2; i >=2; i--) {
if (isPrime(i)){
if (isPrime(s-i)){
System.out.println(i + "*" + (s-i) + "=" + (i*(s-i)));
break;
}
}
}
}
public static boolean isPrime(int n) {
if (n <= 3) {
return n > 1;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}