2009/10/25 Andres Valloud <[email protected]>: > > isPrime > > | guess guessSquared delta selfSqrtFloor | > self <= 1 ifTrue: [^self error: 'operation undefined']. > self even ifTrue: [^self = 2]. > guess := 1 bitShift: self highBit + 1 // 2. > [ > guessSquared := guess * guess. > delta := guessSquared - self // (guess bitShift: 1). > delta = 0 > ] whileFalse: [guess := guess - delta]. > guessSquared = self ifFalse: [guess := guess - 1]. > selfSqrtFloor := guess. > 3 to: selfSqrtFloor by: 2 do: [:each | self \\ each = 0 ifTrue: > [^false]]. > ^true > > > Also, the above code can be used to implement sqrtFloor and sqrtRounded > in Integer. I am sure Nicolas Cellier remembers this :).
If http://bugs.squeak.org were not down, I would even provide a link with these enhancements > > Andres. > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
