Project Euler problem 1- SML Implementation


Finished the current assignments and lectures for my Programming Languages course on Coursera, so I figured I’d go and do some other stuff in ML.  ML is a functional language, very heavy on recursion among other fun differences from imperative and OO languages.

Here’s a solution to Project Euler problem 1, summing all multiples of 3 and 5 that are below 1000.  

fun sum_multiples_3_5(limit : int) =

    if limit = 0

    then 0

    else if limit mod 3 = 0 orelse limit mod 5 = 0

           then limit + sum_multiples_3_5(limit-1)

           else sum_multiples_3_5(limit-1)

This is a general function, it will sum all multiples of 3 and 5 up through your limiting value.  If you want less than 1000, then, you’d call it:

sum_multiples_3_5(999);

The answer, in this case, is 233168.

I may generalize it further, taking a list of ints which are the factors you want multiples of.  That looks like a lot of extra work for something that is right now killing time because I can’t sleep, though, so I’ll be putting it off a bit.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: