题目描述
输入 N(N<=10000), 验证 4~N 所有偶数是否符合哥德巴赫猜想
(N 为偶数)
如果一个数, 例如 10, 则输出第一个加数相比其他解法最小的方案如 10=3+7=5+5, 则 10=5+5 是错误答案
输入输出格式
输入格式:
第一行 N
输出格式:
4=2+2 6=3+3 N=x+y
输入输出样例
输入样例 #1:
10
输出样例 #1:
- 4=2+2
- 6=3+3
- 8=3+5
- 10=3+7
思路: 打印出素数表, 一一比对
- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> char p[10010];
- void setPrime(int);
- int main() {
- int n,
- i,
- j,
- k,
- flag;
- setPrime(10010);
- scanf("%d", &n);
- if (n < 4) return 0;
- for (i = 4; i <= n; i += 2) {
- flag = 0;
- for (j = 2; j < i; j++) {
- k = i - j;
- if (p[j] && p[k]) {
- printf("%d=%d %d\n", i, j, k);
- break;
- }
- }
- }
- return 0;
- }
- void setPrime(int n) {
- int i,
- sqr,
- k;
- sqr = sqrt(n);
- memset(p, 1, sizeof(p));
- p[0] = p[1] = 0;
- for (i = 2; i <= sqr; i++) {
- if (p[i]) {
- k = i;
- k += k;
- while (k < n) {
- p[k] = 0;
- k += i;
- }
- }
- }
- }
来源: http://www.bubuko.com/infodetail-2546989.html