Steady squares: Difference between revisions
Content added Content deleted
(→{{header|Fe}}: Much faster mod calculation) |
(→{{header|Fe}}: Better mod) |
||
Line 794: | Line 794: | ||
<syntaxhighlight lang="clojure"> |
<syntaxhighlight lang="clojure"> |
||
(= steadySquares |
(= steadySquares |
||
(fn (maxNumber) ; |
(fn (maxNumber) ; max number to consider |
||
(let powerOfTen 10) ; 10^(the number of digits in n |
(let powerOfTen 10) ; 10^(the number of digits in n |
||
(let maxSquare (* maxNumber maxNumber)) ; largest square to consider |
|||
(let lastDigit (list 1 5 6)); a steady square must end with 1, 5 or 6 |
(let lastDigit (list 1 5 6)); a steady square must end with 1, 5 or 6 |
||
(let lastResult (cons 0 nil)); latest steady square start with a dummy 0 |
(let lastResult (cons 0 nil)); latest steady square start with a dummy 0 |
||
Line 816: | Line 815: | ||
; FizzBuzz for an example of doing it with a C function |
; FizzBuzz for an example of doing it with a C function |
||
(let n2%p10 n2) |
(let n2%p10 n2) |
||
(let mDivisor |
(let mDivisor (* powerOfTen powerOfTen)) |
||
(while (<= powerOfTen mDivisor) |
(while (<= powerOfTen mDivisor) |
||
(while (<= mDivisor n2%p10) |
(while (<= mDivisor n2%p10) |