Project Euler #1

Filed Under (Development) by manatarms on 25-03-2009

Tagged Under :

Problem #1 in the Project Euler series is:

Add all the natural numbers below one thousand that are multiples of 3 or 5.

A few of the more interesting/elegant solutions I’ve seen are listed below.

C#

1
2
List<int> Numbers = (Enumerable.Range(0, upperLimit)).ToList();
int Result = (from n in Numbers where n % 3 == 0 || n % 5 == 0 select n).Sum();

F#

1
2
3
4
5
6
7
8
9
#light
let rec sum_mul xs =
    match xs with
        | []    -> 0
        | y::ys when y % 3 = 0 || y % 5 = 0 -> y + sum_mul ys
        | y::ys -> sum_mul ys
 
let sum = sum_mul [1 .. 999]
print_any sum

Ruby (from csLife)

1
puts (1...1000).select { |n| n % 3 == 0 or n % 5 == 0 }.inject { |sum, n| sum + n }

Haskell

1
sum [n | n <- [1..1000-1], n 'mod' 5 == 0 || n 'mod' 3 == 0]

Erlang

1
2
3
4
5
-module(euler_1).
-export([start/0,solve_euler_1/1]).
 
start() -> io:format("~w~n",[solve_euler_1(1000)]).
solve_euler_1(N) -> lists:sum([X || X <- lists:seq(1,N-1), (X rem 3 == 0) or (X rem 5 == 0)]).

Leave a Reply