附件2 :
大学生程序设计竞赛样题(更多样题参见172.24.10.6)
Description
著名的哥德巴赫猜想是:每个不小于6的偶数都可以表示为两个奇素数之和。例如,16=3+13=5+11。下面需要你来编程验证一下哥德巴赫猜想是否正确。
Input
在输入的若干行数据中,每行仅有一个偶数N(6<=N<=2000000000)。
Output
你需要输出N行数据,每行以升序输出两个素数,这两个素数的和等于输入中的那个偶数,如果有多种选择,输出乘积最大的,例如 N==16时,输出5 11,而不是3 13。当你发现偶数N不能拆分成两个素数时,请立刻放下手中的程序,直接到A9找校长,因为你和大连东软信息学院都将名垂青史。
Sample Input
6 16 20
Sample Output
3 3
5 11 7 13
C语言答案供参考: #include
int m=sqrt(n);
int i; for(i=2;i<=m;++i) if(n%i==0) return 0; return 1; }
void main() { int n; while(scanf(\ { }
}
int m=n/2;
if(m%2==0) --m; while(1) { if(is_prime(m)&&is_prime(n-m)) { printf(\ break; } else m-=2; }