I just started with solving Project Eulers problems. Even though this one is very simple. I want to take your opinion on the best solution.
The problem:
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
This is how I coded it:
package com.problem.one.ten;
public class NaturalNumber {
public static void main(String args[]) {
int sum=0;
for(int i=0; i<1000; i++) {
if((i%3 == 0) || (i%5 == 0)){
sum += i;
}
}
System.out.println(sum);
}
}
exp() is used to return the Euler's number e raised to the power of a double value. Here, e is an Euler's number and it is approximately equal to 2.718281828459045.
y=y(xi)+f(xi,y(xi))(x−xi).
Euler's method is used for approximating solutions to certain differential equations and works by approximating a solution curve with line segments.
The Euler method is a first-order method, which means that the local error (error per step) is proportional to the square of the step size, and the global error (error at a given time) is proportional to the step size.
A better solution is a simple application of inclusion-exclusion principle. The sum of all numbers we are interested in is (1) the sum of all numbers divisible by 3, plus (2) the sum of all numbers divisible by 5, minus (3) the sum of all numbers divisible by 15. Each of the 3 sums is a sum of an arithmetic progression, which is relatively easy to find. Basically, you don't need a loop.
The number of non-negative integers divisible by n below N is exactly [(N - 1) / n] + 1. The maximal such number is n * ([(N - 1) / n], therefore by the arithmetic progression sum formula, their sum is [(N - 1) / n] * ([(N - 1) / n] + 1) * n / 2.
For our case, we have got:
The final result is 233168.
Perhaps an even better solution exists.
It looks fine, though I would put sum
in main. It's not a big deal on such a simple program. But in general, you should declare variables in the narrowest possible scope.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With