题目描述
所谓哥德巴赫猜想是指,任一大于2的偶数都可以写成两个质数之和(严格说来,这是欧拉的等价描述版本)。例如6=3+3,8=3+5,...,18=7+11。迄今为止,这仍然是一个著名的世界难题,被誉为数学王冠上的明珠。试编写程序,验证任一大于2的偶数都能写成两个质数之和。(可能有多种情况,请输出两数差最大的那组)
输入要求
输入一个大于2的偶数N。
输出要求
输出两个质数和的形式,小的质数在前,大的质数在后。
输入样例
16
输出样例
16=3+13
#include <stdio.h>
int zhi(int n);
int main() {
int n, max = -1, x = 0, y = 0;
scanf("%d", &n);
for (int i = 2; i <= n / 2; i++) {
if (zhi(i) && zhi(n - i)) {//判断两数是否质数
if (max < n - i - i) {//比较两数相差最大的
max = n - i - i;
x = i;
y = n - i;
}
}
}
printf("%d=%d+%d\n", n, x, y);
return 0;
}
int zhi(int n) {//判断是否质数
for (int i = 2; i < n; i++) {
if (n % i == 0)
return 0;
}
return 1;
}