12 lines
280 B
Text
12 lines
280 B
Text
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
|
|
}
|