#include <iostream> #include <string.h> #include <vector> using namespace std; constexpr long long mx = 100000000; vector<bool> sieve; vector<bool> seen; vector<char> nb; constexpr int wanted = 200; long long a[wanted]; long long u = 0; int main() { sieve.resize(mx); seen.resize(mx); nb.resize(mx); for (int n=0; n<wanted; n++) { a[n] = -1; } a[0] = 1; for (long long n=2; n<mx; n++) { if (!sieve[n]) { for (long long m=n; m<mx; m+=n) { sieve[m] = true; } for (long long k=1;; k++) { long long pk3 = n + k*k*k; if (pk3 >=mx) { break; } else if (nb[pk3]<wanted) { nb[pk3]++; } } } if (nb[n]<wanted && a[nb[n]]<0) { a[nb[n]] = n; while (a[u]>=0) { cout << u << ' ' << a[u] << endl; u++; if (u==wanted) { goto theEnd; } } } } theEnd: return 0; }