Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Euler Problem 1 Definition
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.
Solution
There are four ways to solve this problem in R.
- Brute force loop through all numbers from 1 to 999 and test whether they are divisible by 3 or by 5 using the modulus function.
- Vector arithmetics.
- Sequences of 3 and 5, excluding duplicates (numbers divisible by 15).
- Using an arithmetic approach.
By the way, the problem definition on the Project Euler website is not consistent: the title mentions multiples of 3 AND 5, while the description asks for multiples of 3 OR 5.
# Solution 1 answer <- 0 for (i in 1:999) { if (i%%3 == 0 | i%%5 == 0) answer <- answer + i } # Solution 2 sum((1:999)[((1:999)%%3 == 0) | ((1:999)%%5 == 0)]) # Solution 3 sum(unique(c(seq(3, 999, 3), seq(5, 999, 5))))
The sum of an arithmetic progression , where n is the number of elements and a1 and an are the lowest and highest value, is:
The numbers divisible by
We can now easily calculate the sum of all divisors by combining the above progression with the formula for arithmetic progressions as expressed in the above code, where m is the divisor and n< \i> the extent of the sequence.
p is the highest number less than n divisible by m. In the case of 5, this number is 995.
Substitution gives:
# Solution 4 SumDivBy <- function(m, n) { p <- floor(n/m)*m # Round to multiple of n return (m*(p/m)*(1+(p/m))/2) } answer <- SumDivBy(3, 999) + SumDivBy(5, 999) - SumDivBy(15, 999)
The post Euler Problem 1: Multiples of 3 or 5 appeared first on The Devil is in the Data.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.