fcn farey_len(n){ var cache=Dictionary(); // 107 keys to 1,000; 6323@10,000,000 if(z:=cache.find(n)) return(z); len,p,q := n*(n + 3)/2, 2,0; while(p<=n){ q=n/(n/p) + 1; len-=self.fcn(n/p) * (q - p); p=q; } cache[n]=len; // len is returned }