1. 程式人生 > >Luogu P1304 哥德巴赫猜想

Luogu P1304 哥德巴赫猜想

ora printf math clu 輸入輸出格式 memset 答案 AI ring

題目描述

輸入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; } } } }

Luogu P1304 哥德巴赫猜想