Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long int ll;
- #define maxn 1000006
- bool mark[1000006+5];
- vector<ll>isprime;
- void sieve()
- {
- mark[0]=true;
- mark[1]=true;
- for(ll i=2;i*i<=maxn;i++)
- {
- if(mark[i]==false)
- {
- for(ll j=i*i;j<=maxn;j+=i)
- mark[j]=true;
- }
- }
- for(ll i=2;i<=maxn;i++)
- {
- if(mark[i]==false)
- isprime.push_back(i);
- }
- }
- int main()
- {
- sieve();
- ll n,i,j,cas=1,k,a,b,c,d,e;
- while(cin>>n && n)
- {
- ll ans=0;
- for(i=0;i<isprime.size();i++)
- {
- if(isprime[i]>=n)
- break;
- b=n-isprime[i];
- a=upper_bound(isprime.begin(),isprime.end(),b)-isprime.begin();
- // cout<<"A "<<a<<endl;
- a--;
- if(a<=i)
- break;
- ans+=(a-i);
- }
- cout<<"Case "<<cas++<<": "<<ans<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement