graphicalSieve.frink

View or download graphicalSieve.frink in plain text format


// Graphical Sieve of Eratosthenes
// Demonstrates dynamical repaint.  This is not necessarily an efficient way
// to do things, but demonstrates that the graphics can be dynamically updated
// as more data is added.

n = eval[input["Enter highest number: ", 10000]]
sieve[n,floor[sqrt[n]]]

sieve[n, cols] :=
{
   g = new graphics
   g.color[0,0,0]
   g.fillRectSides[0,0,cols,n div cols]

   win = g.show[]
   
   // Initialize array
   array = array[0 to n]
   array@1 = false

   g.color[1,1,1]
   for i = 2 to ceil[sqrt[n]]
      if array@i != 0
      {
         for j = i^2 to n step i
         {
            array@j = 0
            x = j mod cols
            y = j div cols
            g.fillRectSides[x,y,x+1,y+1]
         }
         win.repaint[]
      }
//   print["About to paint."]
//   g.print[]
}


View or download graphicalSieve.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 17836 days, 23 hours, 49 minutes ago.