試題 算法提高 哥德巴赫猜想
資源限制
時間限制:1.0s 內存限制:256.0MB
問題描述
根據所給函數(判斷一個整數是否是素數),然後依託該函數,將輸入N內的偶數(6-N),輸出爲兩個素數之和(要求爲可行的第一種分解),並各自驗證哥德巴赫猜想:任何一個大於等於6的偶數(驗證6到N之間的偶數即可)都可以表示成兩個素數之和,注意,此處不要求驗證哥德巴赫猜想。
輸入格式
7
輸出格式
6=3+3
樣例輸入
30
樣例輸出
6=3+3
8=3+5
10=3+7
12=5+7
14=3+11
16=3+13
18=5+13
20=3+17
22=3+19
24=5+19
26=3+23
28=5+23
代碼
#include<stdio.h>
int f(int n){//驗證是不是素數
int i;
for(i=2;i<n;i++){
if(n%i==0){
return 1;
}
}
return 0;
}
int main(){
int n,i,j;
scanf("%d",&n);
for(i=6;i<n;i++){
int x=0;
for(j=3;j<=i-3;j+=2){//偶數除了2一定不是素數
if(f(j)==0&&f(i-j)==0){//若兩個數都爲素數則標記並退出循環
x=1;
break;
}
}
if(x==1){//x=1時滿足條件輸出
printf("%d=%d+%d\n",i,j,i-j);
}
}
return 0;
}