1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Finding the sum of multiples of 3 and 5 below 1000 (Matlab)

  1. Aug 23, 2013 #1
    1. The problem statement, all variables and given/known data
    Project Euler Problem 1.

    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.

    Hello, there

    I do understand what a multiple is, and how to sum and bunch of numbers... but I have no idea why my algorithm is not delivering the correct result.

    When I multiply the array [1:333] by 3, shouldn't I get all the multiples of 3 below 1000? (3, 6, 9... etc), and the same goes for the [1:199] by 5 right? This is a really simple problem, but I don't see where I'm going wrong here :cry:

    2. The attempt at a solution
    clc
    clear

    x3 = [1:333]*3
    x5 = [1:199]*5

    all_multi_array = [x3,x5]

    sum(all_multi_array)
     
  2. jcsd
  3. Aug 23, 2013 #2

    mfb

    User Avatar
    2016 Award

    Staff: Mentor

    What happens with 15?
    How many times do you count it in your algorithm?
     
  4. Aug 23, 2013 #3
    ahhh... I count it twice!

    and the same goes for 30, 45, 60, etc I'm guessing...

    EDIT:
    Yes, it returned a correct result for my following algorithm

    clc
    clear

    x3 = [1:333]*3
    x5 = [1:199]*5

    all_multi_array = [x3,x5]

    sum(all_multi_array) - sum((15)*[1:66])

    Thanks for the hint mfb :thumbs:
     
  5. Aug 23, 2013 #4

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    Rather than hard-coding those array limits (333, 199, 66), wouldn't it be better to calculate them given some arbitrary N, where in this case N happens to be 1000?

    Without forming those arrays, what is the sum of [1:333]? [1:199]? [1:66]?
     
  6. Aug 23, 2013 #5
    I guess it would add some extra scope to the code. I could make N = 999 (because it must be less than 1000) and use the "floor" command in matab to round the numbers when I divide them by 3,5 and 15 respectively.

    EDIT:
    The only way I could think of finding the sum of those numbers without creating an array, would be with loops. But that's the opposite of modularisation... so I'm not sure :tongue:
     
    Last edited: Aug 23, 2013
  7. Aug 23, 2013 #6

    mfb

    User Avatar
    2016 Award

    Staff: Mentor

    There is a direct formula for the sum of the first N integers, and you can adapt it to your sums.

    It is not necessary to solve the original problem, but it is still nice to see how it can be generalized.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted



Similar Discussions: Finding the sum of multiples of 3 and 5 below 1000 (Matlab)
  1. 3 to 5 decoder problem (Replies: 1)

Loading...