#include using namespace std; typedef unsigned int uint; typedef long long int ll; typedef unsigned long long int ull; #define debugv(v) printf("L%d %s => ",__LINE__,#v);for(auto e:v){cout< ",__LINE__,#m);for(int x=0;x<(w);x++){cout<<(m)[x]<<" ";}cout<>=1,k++)s=(s<<1)|(u&1);for(;0>=1)cout<<(s&1);}} #define TIME chrono::system_clock::now() #define MILLISEC(t) (chrono::duration_cast(t).count()) template ostream& operator <<(ostream &o,const pair p){o<<"("< nonprime; vector primelist; void gen_primelist(vector& out, int high){ int i,j; out.resize(high+1); out[0] = out[1] = 1; int sqh = (int)sqrt(high); for (i=2; i<=sqh+1; i++){ if (out[i] == 0){ for (j=i*i; j<=high; j+=i){ // i*i out[j] = 1; } } } } int width,height; int m,n; int memo[20000]; int memoused[20000]; int calc(int num,int pi=0){ //printf("%d %d\n",num,pi); if (num == n) return 1; if (num > n) return 0; if (memoused[num]) return memo[num]; memoused[num] = 1; int res = 0,t; for (int i=pi;i> n; gen_primelist(nonprime,n); primelist.reserve(2000); for (i=2;i<=n;i++){ if (!nonprime[i]) primelist.push_back(i); } cout << (calc(0)-1) << endl; return 0; }