allocate mem(2^30) { my (a = vector(2 500)); my (L = vector(#a, n, vector(n))); \\ seed a[1] = 1; a[2] = 1; L[2][1] = 1; for (n = 1, #a, print (n " " a[n]); for (k = 1, n, if (L[n][k], for (w = n+1, #a, if (gcd(w, n*k)==1, a[w] += L[n][k]; L[w][k] += L[n][k]; L[w][n] += L[n][k]; break; ); ); ); ); ); }