【數論】poj2262 Goldbach's Conjecture

傳送門:戳我


題目大意:哥德巴赫猜想balabala,要求你把一個整數拆分成兩個奇素數。不能拆分則輸出 "Goldbach's conjecture is wrong."


思路:顯然 "Goldbach's conjecture is wrong."這種情況是不會出現的,這種XX猜想雖然還沒有得到證明,但是在我們需要擔心的範圍內肯定是沒有反例的,如果找到了反例那麼你就牛逼了。剩下的就是篩選法打個素數表,然後暴力出結果。

#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

int prime[1000000+50],n;

int main(){
	memset(prime,0,sizeof(prime));
	prime[0]=prime[1]=1;

	for (int i=2;i<=1000000;i++){
		if (prime[i]==0){
			for (int j=2*i;j<=1000000;j+=i){
				prime[j]=1;
			}
		}
	}
/*	
	for (int i=1;i<=1000;i++){
		if (prime[i]==0) cout<<i<<" ";
	}
	cout<<endl;
*/	
	while (scanf("%d",&n)!=EOF){
		if (n==0) break;

		for (int i=3;i<=n;i++){
			if (prime[i]==0 && prime[n-i]==0){
				printf("%d = %d + %d\n",n,i,n-i);
				break;
			}
		}
	}
	return 0;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章