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
Tính tổng của các số tự nhiên chia hết cho 3 hoặc 5 nhưng nhỏ hơn 1000.
Phân tích
Tổng của tất cả các số tự nhiên liên tiếp từ 1 tới x là : x(x+1)/2 gọi tổng này là sum
Sẽ có floor(x/3) số giữa 1 và x sẽ chia hết cho 3 (floor trả lại số nguyên lớn nhất không lớn hơn x/3) (giả sử kết quả là số nguyên.
Ví dụ từ 1 tới 10 thì có floor(10/3)=3 số là 3,6,9 tổng 3+6+9 =18
Như vậy có thể viết lại
3+6+9 = 3/3 * (3+6+9) = 3* (1+2+3)
Như vậy tổng các số chia hết cho 3 nhỏ hơn x bằng 3* sum (x/3)
Tương tự tổng các số chia hết cho 5 nhỏ hơn x bằng 5 * sum (x/5)
Tuy nhiên tổng này vẫn tính kèm cả số chia hết cho cả 3 và 5, nếu tính tổng thì sẽ bị lặp
Như vậy cần trừ đi tổng các số chia hết cho cả 3 và 5 tức là 15* sum (x/15)
|
Không có nhận xét nào:
Đăng nhận xét