С помощью Ruby есть (по крайней мере, в моей скромной голове)два способа решить эту проблему:
Сначала создайте массив кратных троек и пятерок, от одного до девятисот девяноста девяти. Сложите их и вычтите из суммы массива кратных пятнадцати от одного до девятисот девяноста девяти (наименьший общий делитель).
def sum three = (1..999).to_a.reject {|n| n % 3 != 0}.reduce(:+) five = (1..999).to_a.reject {|n| n % 5 != 0}.reduce(:+) fifteen = (1..999).to_a.reject{|n| n % 15 != 0}.reduce(:+) return three + five — fifteen end
Второй код, очень похожий на первый, за исключением того, что вместо добавления массива массивы объединяются, а повторяющиеся элементы удаляются перед суммированием.
def sum2 three = (1..999).to_a.reject {|n| n % 3 != 0} five = (1..999).to_a.reject {|n| n % 5 != 0} total = (three | five).reduce(:+) end
Вы 575039 человек, решивший эту задачу.
— однозначно, я элита среди элит