输入一个大于 2 的偶数 n(n<=10000)输出该数字的哥德巴赫猜想分解方案如
果一个数不止一种分法则输出第一个加数相比其他分法最小的方案例如
10,10=3+7,10=5+5因为 3<5所以应该输出 10=3+7
【输入文件】文件名:goldbach.in
一个大于 2 的偶数 n(n<=10000)
【输出文件】文件名:goldbach.out
分解后的等式
【样例输入】
10
【样例输出】
10=3+7
3<5,这个是比较第一位加数,代表至少有两种分法
不懂哥德巴赫,10=2+8,10=1+9,10=4+6 为什么不算,至少弄明白这个,才能做你的题。
具体你的算法,就是比较2个相加的数中的最小值,和另外一组算法当中2个相加的数中的最小值进行比较,看那个最小就用哪个呗。
供参考:
#include <stdio.h>
int isPrime(int n)
{
int i;
if (n <= 3) return n > 1;
for (i = 2; i * i <= n; i++)
if (n % i == 0) return 0;
return 1;
}
int main()
{
int i, n;
while (scanf("%d", &n) == 1 && n > 0) // 输入n <= 0 时,结束输入
{
for (i = 2; i <= n / 2; i++) {
if (isPrime(i) && isPrime(n - i))
{
printf("%-d=%-d+%-d\n", n, i, n - i);//输出
break;
}
}
}
return 0;
}