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) ; max number to consider - must be a power of 10
(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 maxSquare)
(let mDivisor (* powerOfTen powerOfTen))
(while (<= powerOfTen mDivisor)
(while (<= powerOfTen mDivisor)
(while (<= mDivisor n2%p10)
(while (<= mDivisor n2%p10)