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));
}
}