\\ describe a fraction: \\ - integer part \\ - transient part \\ - periodic part fracdigits(v, base) = { \\ integer part my (int=digits(floor(v), base)); \\ period length my (den=denominator(v), pr=factor(base)[,1]~, p=znorder(Mod(base, den / prod(i=1, #pr, pr[i]^valuation(den,pr[i]))))); \\ transient part my (tra=[], fra=frac(v)); while (fra != frac(fra*base^p), tra = concat(tra, floor(fra*base)); fra = frac(fra*base); ); \\ periodic part my (per = vector(p, x, my (d=floor(fra*base)); fra = frac(fra*base); d)); return ([int,tra,per]); } a(n) = { if (n==1, return (0), my (f=fracdigits(1/n, 10), d=concat(f), m=vecmax(d)); for (k=1, oo, if (d[k]==m, return (k))) ); } for (n=1, 10 000, print (n " " a(n))) quit