川のブログ

川の適当気ままなブログです。 

AOJ 0185 Goldbach's Conjecture II

こんにちは川です。

最近volume0をやっていてだんだん解ける問題が少なくなってきたので新たに勉強したいなと思っています。

今回は0056のやつの入力される値がでかくなったやつですね。

これに対抗するためにprimeをint型からbool型に変えただけですね。

0056の解説は下にリンクを張っています。

kawakawa.hatenablog.com

 

ソースコード

 

#include<bits/stdc++.h>
using namespace std;
int main()
{
bool prime[1000001];
for(int i=2;i<1000001;i++)prime[i]=0;
for(int i=2;i<=sqrt(1000000);i++){
if(prime[i]==0){
for(int j=i+i;j<1000001;j+=i)prime[j]=1;
}
}
int n,cou=0;
while(cin>>n&&n!=0){
for(int i=2;i<=n/2;i++)if(prime[i]==0&&prime[n-i]==0)cou++;
cout<<cou<<endl;
cou=0;
}
}