Monthly Archives: March 2015

Visualizing Project Euler Problem 58 using Processing/Java

spiralprime2

Another visualization of Euler 58. This time, using Processing with Java.
Previous .NET winforms visualization of Euler 58
https://projecteuler.net/problem=58

primekey

spirialprimes

public int i_x = 500;
public int i_y = 500;
public static int Current_Direction = 0;
public int cur_step = 1;
public int skip_at = 7;
public int skip = 3;
public boolean first_turn = false;
public int count = 5;
public int diag_count = 4;
public int prime_count = 2;
 
void setup()
{
  size(1000, 1000);
  background(153);
}
 
void draw(){
  cur_step += 1;
  if ( isPrime(cur_step))
  {
    if (cur_step == skip_at)
    {
      fill(44,162,95);
    }
    else
    {
      fill(153,216,201);
    }
  }
  else
  {
    fill(229,245,249);
  }
 
  if (Current_Direction == 0)
  {
     rect( i_x + 10, i_y, 10, 10);
      i_x += 10;
  }
  else if (Current_Direction == 3)
  {
      rect( i_x, i_y + 10, 10, 10);
      i_y += 10;
  }
  else if (Current_Direction == 2)
  {
      rect( i_x - 10, i_y, 10, 10);
      i_x -= 10;
  }
  else if (Current_Direction == 1)
  {
      rect( i_x, i_y - 10, 10, 10);
      i_y -= 10;
  }
 
  if (cur_step <= 3)
      Turn();
  if (cur_step == 5)//2
      Turn();
  if (skip_at == cur_step)
  {
      skip_at += skip;
      if (first_turn == false)
          first_turn = true;
      else
      {
          first_turn = false;
          skip += 1;
      }
      Turn();
  }
}
 
protected void Turn()
{
    if (Current_Direction == 3)
        Current_Direction = 0;
    else
        Current_Direction += 1;
}
 
public boolean isPrime(int n)
{
  if (n == 1)
        return false;
    if (n == 2)
        return true;
    for (int i = 2; i < n; ++i)
    {
        if ((n % i) == 0)
            return false;
    }
 return true; 
}

pROCESSINGlEARNING
A fun little project whilst attempting to learn https://processing.org/

I draw 10 x 10 pixel boxes, 100 per row. If the number is a Prime, I highlight it in orange.

100X100PRIMES

Java

//Number Counter
public int i_num = 0;
//Draw Coordinates
public int i_x = 0;
public int i_y = 0;
 
void setup()
{
  size(1000, 1000);
  background(153);
}
 
void draw(){
 
      if ( isPrime(i_num))
      {
        fill(204, 102, 0);
        rect(i_x*10,i_y + 0,10,10);
      }
      else
      {
        fill(255, 255, 255);
        rect(i_x*10,i_y + 0,10,10);
      }
  i_x +=1;
  i_num +=1;
 
  //Go to Next Line
  if ( i_x == 100 )
  {
    i_x = 0;
    i_y += 10; 
  }
 
}
 
public boolean isPrime(int n)
{
  if (n == 1)
        return false;
    if (n == 2)
        return true;
    for (int i = 2; i < n; ++i)
    {
        if ((n % i) == 0)
            return false;
    }
 return true; 
}