import java.awt.*; import javax.swing.*; //import java.awt.event.*; //import java.awt.geom.*; public class PrimalSpire5 extends JApplet { public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setPaint(Color.blue); int width = getSize().width-1; int height = getSize().height-1; int midX = width / 2; int midY = height / 2; int x = midX; int y = midY; int q = 0; int count = 1; int j = -1; int dir = 3; //direction /* you need to add 1 to whatever number you want the spiral to go to and put it where "i <" */ for (int i = 1; i < 1000001; i++) { if (dir == 0) { // go east x+=1; } else if (dir == 1) { // go north y-=1; } else if (dir == 2) { // go west x-=1; } else if (dir == 3) { // go south y+=1; } if (i < 4) { dir++; } if (i == 4) { dir = 2; q = 5; //just a randomly (read: badly) named variable. I didn't know what to call it. } if (i == q) { dir++; if (i > 9) { j++; } if (j % 2 != 0) { count++; } q+= count; } if (dir > 3) { dir = 0; } if (is_prime(i)) { g2d.setPaint(Color.black); g2d.fillRect(x,y,1,1); } else { g2d.setPaint(Color.blue); g2d.fillRect(x,y,1,1); } } } public static boolean is_prime (int n) { boolean prime = true; int limit = (int) Math.sqrt (n); for (int i = 2; i <= limit; i++) { if (n % i == 0) { prime = false; break; } } if (n == 0 || n == 1) { return false; } return prime; } public static void main(String args[]) { JFrame frame = new JFrame("Primal Spire"); JApplet applet = new PrimalSpire5(); frame.getContentPane().add("Center", applet); frame.setSize(300, 250); frame.setVisible(true); } }