-
-
Save nefarioustim/1008926 to your computer and use it in GitHub Desktop.
// Do the maths | |
for( | |
var sum = 0, i = 1; | |
i < 1000; | |
!(i % 3 && i % 5) && (sum += i), i++ | |
); | |
// Log the result | |
console.log(sum); |
// Prep the array | |
for( | |
var arr = [], i = 1; | |
i < 1000; | |
!(i % 3 && i % 5) && arr.push(i), i++ | |
); | |
// Sum the array | |
console.log( | |
arr.reduce( | |
function(prev, current) { | |
return prev + current | |
} | |
) | |
); |
print sum([i for i in range(1000) if not (i % 3 and i % 5)]) |
puts (1...1000).select{ |n| n % 3 == 0 || n % 5 == 0 }.reduce(:+) |
Comments welcome: euler-problem-1.sh
This is as short as I can make it whilst keeping it legible:
var sum=0, i=2;
while(i++,i<1000) { sum += (i % 3 && i % 5) ? 0 : i; }
console.log(sum);
Starting from 2 to save some cycles. Interesting.
Do I need to explain my working?
def sum_under (val, step):
pairs = val / step
return (pairs*((pairs*step)+step)/2)
sum_under (999,3) + sum_under(999,5) - sum_under(999,15)
Nah, that's the algebraic solution to the problem. I remember doing that at school. :D
Actually Dave, can you do it again using only 1000, 3, and 5 as parameters?
Your maths is wrong 'cos whilst 999 is valid for 3, it should be 995 for 5 and… uh… 990 for 15, I believe.
For those that are interested, problem 2 solved with JS here: https://gist.github.com/1009018
(999 / 15) * 15 = 990
(999 / 15.0) * 15 = 998.9999
Integer truncation is my friend
Here is one that solves the sum of multiples of numbers in an array less than a given limit.
Find the codein JS HERE
//test: find the sum of the multiples of 3 and 5 less than 1000
console.log(sumOfMultplesOfNumbersLessThan([3,5], 1000));
sum = 0;
for(i = 1; i<1000;i++){
if((i % 3 === 0) || (i % 5 ===0)){
sum += i;
}
}
newbie rules!
Super useful. thanks for posting this with the different code options.
Both highly valid points, Dave. I shall update.