Project Euler – Problem 28

Problem 28: Starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral is formed as follows:

21 22 23 24 25
20  7  8  9 10
19  6  1  2 11
18  5  4  3 12
17 16 15 14 13

It can be verified that the sum of the numbers on the diagonals is 101.

What is the sum of the numbers on the diagonals in a 1001 by 1001 spiral formed in the same way?

class runner
{
	public static void main (String[] args) throws java.lang.Exception
	{
		long time = System.currentTimeMillis();
		
		int sum = 1; int diff_p = 0; int prev = 0;
		for(int i=1;i<=1001;i+=2){
			int difference = 2*diff_p;//from 8*diff_p/4
			for(int j=1;j<5;j++){
				sum += difference*j+prev;
			}
			prev = i*i;
			diff_p++;
		}
		
		System.out.println(sum);
		System.out.println("time:"+(System.currentTimeMillis()-time));
	}
}

Reduces to..

class runner
{
	public static void main (String[] args) throws java.lang.Exception
	{
		long time = System.currentTimeMillis();
		
		int sum = 1; int diff_p = 0; int prev = 0;
		for(int i=1;i<=1001;i+=2){
			sum += diff_p+prev*4;
			prev = i*i;
			diff_p+=20;
		}
		
		System.out.println(sum);
		System.out.println("time:"+(System.currentTimeMillis()-time));
	}
}