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 mxn 10000007
- bool mark[mxn];
- vector<ll>isprime;
- void sieve()
- {
- ll i,j,k;
- mark[0]=true;
- mark[1]=true;
- for(i=2;i*i<=mxn;i++)
- {
- if(mark[i]==false)
- {
- for(j=i*i;j<=mxn;j+=i)
- {
- mark[j]=true;
- }
- }
- }
- //isprime.push_back(2);
- for(i=2;i<=mxn;i++)
- {
- if(mark[i]==false)
- isprime.push_back(i);
- }
- }
- int main()
- {
- sieve();
- ll n,i,j,k,l;
- while(cin>>n)
- {
- vector<ll>res;
- if(n<8)
- {
- cout<<"impossible"<<endl;
- continue;
- }
- else
- {
- if(n%2==0)
- {
- res.push_back(2);
- res.push_back(2);
- n-=4;
- }
- else
- {
- res.push_back(2);
- res.push_back(3);
- n-=5;
- }
- int flag=0;
- for(i=0;isprime[i]<n;i++)
- {
- ll a=isprime[i];
- ll b=n-isprime[i];
- if(mark[b]==false)
- {
- // cout<<"a "<<a<<" b "<<b<<endl;
- res.push_back(a);
- res.push_back(b);
- flag=1;
- break;
- }
- }
- if(flag==0)
- {
- cout<<"impossible"<<endl;
- }
- else
- {
- for(i=0;i<res.size();i++)
- {
- cout<<res[i]<<" ";
- }
- cout<<endl;
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement