C語言實現 算法提高 哥德巴赫猜想

試題 算法提高 哥德巴赫猜想

                                                                                  藍橋杯試題解答彙總鏈接

資源限制

       時間限制: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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章