1030 :质数的和与积【C/C++/Java/Python】
题目描述
两个质数的和是S,它们的积最大是多少?
提示
输入输出格式
输入格式
一个不大于10000的正整数S,为两个质数的和。
输出格式
一个整数,为两个质数的最大乘积。数据保证有解。
输入输出样例
输入
50
输出
589
【举例及代码】
和为定值 从中间拆开往两边遍历每种情况
11 | 10 |
5 6 | 5 5 |
4 7 | 4 6 |
3 8 | 3 7 |
2 9 | 2 8 |
#include<stdio.h>
#include<math.h>
int isprime(int m)//判断是否为质数
{
int i;
for(i=2;i<=sqrt(m);i++){
if(m%i==0) return 0;
} return 1;
}
int main()
{
int a,i;
scanf("%d",&a);
for(i=a/2;i>=2;i--){ //从中间拆开,两个数越接近其乘积越大
if(isprime(i)&&isprime(a-i)){
printf("%d",i*(a-i)); //若两个数均为质数,输出乘积
break; //终止循环
} }
return 0;
}