#include #include #define MAX 5000000 #define WANTED 10000 #define DIST 3 int lpf[MAX]; int a[WANTED]; bool toclose(int m, int n) { int d = 0; while (m>1 || n>1) { int p = lpf[(m>1) ? m : n]; int v = 0; while (m%p==0) { v++; m/=p; } while (n%p==0) { v--; n/=p; } if (v>0) { d+=v; } else if (v<0) { d-=v; } if (d>=DIST) { break; } } return d