#A208892 #author : Matthijs Coster #explanation: #start : start-value #end : end-value #diff : difference between start-value and end-value #maxfac : maximum of different prime-factors (see A002110) #repeat : number of signatures which corresponds #dx : efficient chosen number to map signatures onto integers #u : representation of signature as integer #n = p1^a1..pk^ak; a1 <= ... <= ak #u = a1 if k = 1 #u = a1*dx+a2 if k = 2 #u = (a1*dx+a2)*dx+a3 if k = 3 (etc.) #P is used to produce u #Q = (u[nn] ... u[nn+diff]) start = 1 end = 1200 repeat = 7 dx = 10 maxfac = 5 diff = end - start P = vector(ZZ,maxfac) Q = vector(ZZ,diff+1) for n in (start..end) : u = 0 f = factor(n) l = len(f) for i in (0..l-1) : g = f[i] P[i] = g[1] for i in (0..l-1) : m = 10 t = 0 for j in (0..l-1) : if (0 < P[j]) & (P[j] < m) : t = j m = P[t] P[t] = 0 u = dx*u + m Q[n-start] = u for k in (repeat..n-start-1) : if Q[k] == u : OK = true for i in (1..repeat-1) : if not Q[k-i] == Q[n-start-i] : OK = false if OK : print "solution", start+k-repeat+1, "..", start+k, n-repeat+1, "..", n print "ready"