Prime numbers demo
Last updated at 6:42 pm UTC on 25 October 2018
ML Karl Ramberg Thu, Oct 25, 2018 at 10:05 AM
diff := OrderedCollection new.
singular := 2.
3 to: 5000000 do:[: i | i isPrime ifTrue:[ diff add: i - singular.
singular := i]].
form := Form extent:8000@8000.
pen := Pen newOnForm: form.
pen up.
pen goto: 100@6000.
pen down.
pen turn: 90.
pen color: Color black.
diff do:[:i | pen go: i. pen turn: 90].
form writePNGfileNamed: 'Sketch.png'
Levente Uzonyi Thu, Oct 25, 2018 at 6:34 PM
The ultimate tool for such use case is Integer >> #primesUpTo:(do:).
The code below is 3 times faster on my machine:
form := Form extent:8000@8000.
pen := Pen newOnForm: form.
pen up.
pen goto: 100@6000.
pen down.
pen turn: 90.
pen color: Color black.
previousPrime := nil.
Integer primesUpTo: 5000000 do: [ :prime |
previousPrime ifNotNil: [
pen
go: prime - previousPrime;
turn: 90 ].
previousPrime := prime ].
form writePNGfileNamed: 'Sketch.png'