patternjavaMinor
Project Euler #6 in Java
Viewed 0 times
projecteulerjava
Problem
Project Euler #6:
The sum of the squares of the first ten natural numbers is,
\$1^2+2^2+ ... + 10^2 = 385\$
The square of the sum of the first ten natural numbers is,
\$(1+2+ ... + 10)^2 = 55^2 = 3025\$
Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is \$3025 − 385 = 2640\$.
Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.
Here is my solution:
It simply does:
$$(1+2+ ... + 100)^2-1^2-2^2- ... -100^2$$
Output:
Result: 25164150
Time used to calculate in nanoseconds: 2231
Questions:
The sum of the squares of the first ten natural numbers is,
\$1^2+2^2+ ... + 10^2 = 385\$
The square of the sum of the first ten natural numbers is,
\$(1+2+ ... + 10)^2 = 55^2 = 3025\$
Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is \$3025 − 385 = 2640\$.
Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.
Here is my solution:
public class DifferenceFinder {
private static final int MAX = 100;
public static void main(String[] args) {
long time = System.nanoTime();
int result = MAX * (MAX + 1) / 2;
result *= result;
for(int i = 1; i <= MAX; i++) {
result -= i * i;
}
time = System.nanoTime() - time;
System.out.println("Result: " + result
+ "\nTime used to calculate in nanoseconds: " + time);
}
}It simply does:
$$(1+2+ ... + 100)^2-1^2-2^2- ... -100^2$$
Output:
Result: 25164150
Time used to calculate in nanoseconds: 2231
Questions:
- Is the simplest solution the most efficient one?
- Does it smell?
Solution
The sum of the first \$n\$ numbers is \$\frac{n(n+1)}{2}\$. The sum of the squares of the first \$n\$ numbers is \$\frac{n(n+1)(2n+1)}{6}\$. So the difference in the question can be expressed as \$\frac{n^2(n+1)^2}{4} - \frac{n(n+1)(2n+1)}{6} = \frac{(3n+2)(n-1)n(n+1)}{12}\$.
This solution is likely the most efficient.
This solution is likely the most efficient.
Context
StackExchange Code Review Q#78273, answer score: 3
Revisions (0)
No revisions yet.