سؤالات چالش برانگیز
- خانه
- /
- سؤالات چالش برانگیز
- /
- مجموع ضرائب 3 یا 5<
مجموع ضرائب 3 یا 5
ضرائب 3 یا 5 که کمتر از 10 هستند برابر با 3، 5، 6 و 9 است. مجموع این اعداد برابر با 23 است.
سؤال: مجموع ضرائب 3 یا 5 که کمتر از 1000 هستند را بدست آورید.
راه اول:
sum = 0
for i in range(1000):
if i%3 == 0 or i%5 == 0:
sum += iراه دوم:
از لیستها و مفهوم list comprehension استفاده میکنیم.
sum([i for i in range(1000) if i%3 ==0 or i%5 ==0])این دو راه از نظر منطق الگوریتم تفاوتی ندارند. از نظر زمان اجرا، روش اول زمان اجرای بهتری دارد.
راه سوم:
مجموع ضرائب 3 را با مجموع ضرائب 5 جمع میکنیم و از مجموع ضرائب 15 کم میکنیم. دلیل این تفاضل این است که ضرائب 15 مانند 15، 30، 45 و ... هم ضریب 3 هستند و هم ضریب 5. بنابراین دو بار تکرار شدهاند.
def func(n, r):
a = n // r
return r * a * (a+1) // 2
func(999, 3) + func(999, 5) – func(999, 15)برای این کار هم نیازی به حلقه و استفاده از لیست نیست. به همین تفاوتی چندانی ندارد عدد n تا چه حد بزرگ باشد.
جواب نهایی: 233168
- برچسب ها
0 نظر