// program directly inspired by A247665 #include #include #define MAX (1LL<<29) // requires ~ 9Gb bool *sieve = 0; // prime sieve long long *gpf = 0; // greatest prime factor long long *sf = 0; // selection sieve (0 = available) long long *a = 0; // A354790 int main() { sieve = new bool[MAX]; gpf = new long long[MAX]; sf = new long long[MAX]; a = new long long[MAX]; memset(sieve, 0, MAX*sizeof(*sieve)); memset(gpf, 0, MAX*sizeof(*gpf)); memset(sf, 0, MAX*sizeof(*sf)); for (long long n=2; n1) { long long g=gpf[r]; r/=g; for (long long m=g; m1) { long long g=gpf[r]; r/=g; for (long long m=g; mm) { v=m; } } } } } return 0; }