计蒜客练习题:蒜头君的猜想(哥德巴赫猜想)

蒜头君的猜想(哥德巴赫猜想)

AC代码:

    #include<iostream>
using namespace std;

int n;

int is_prime[8000010];

//素数筛选法 
int prim(){
	for (int i = 2; i <= n; ++i) {
        is_prime[i] = 1;
	}
	for (int i = 2; i * i <= n; ++i) {
        if (is_prime[i]) {
        	for (int j = i * i; j <= n; j +=i) {
        	  is_prime[j] = 0;
        	}
     	}
	}
}

int main(){
	cin>>n;
	prim();
	int ans = 0;
	for(int i=2;i<=n;i++){
		//查询素数表:x+y=n 等价于 查询n-i是否是素数 
		if(is_prime[i] && is_prime[n-i] && n-i>=i){
			ans++;
		}
	}
	cout<<ans<<endl;
}
posted @ 2018-11-20 21:09  fishers  阅读(334)  评论(0编辑  收藏  举报