رشن | خدمات میزبانی وب

حل مسئله اول اویلر با پایتون

پروژه اویلر یا Project Euler جزو مسائل و پروژه‌هایی در دنیای اینترنت هستند که مسائل را شما به هر زبان برنامه‌نویسی و به هر شکلی می‌توانید حل کنید اما مهم این است که پاسخ نهایی صحیح باشد. مسائل اویلر را در سایت Project Euler می‌توانید مشاهده کنید. من در این مطلب اولین مسئله را برای شما حل می‌کنم.

مطلوب مسئله به زبان انگلیسی

مطلوب مسئله به زبان انگلیسی را ابتدا ببینیم:

نقل قول

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.

مطلوب مسئله به زبان فارسی

مطلوب مسئله به زبان فارسی را حالا بررسی کنیم:

اگر که تمامی اعداد طبیعی کمتر از 10 که بر 3 یا 5 بخش‌پذیر هستند را با هم جمع کنیم به اعداد 3، 5، 6 و 9 می‌رسیم که جمع آن‌ها عبارت عدد 23 می‌شود.

حالا می‌خواهیم که جمع همه اعداد بخش‌پذیر بر 3 یا 5 که از 1000 کمتر باشند را پیدا کنیم.

راه‌حل

راه حل چیست؟ با هم پیش برویم تا مسئله را حل کنیم.

برای این کار باید دو مورد را بدانید: حلقه for و شرطی if.

از حلقه for برای تولید عدد استفاده می‌کنیم و از شرط هم برای چک کردن بخش‌پذیر بودن.

ابتدا یک بار اعداد بخش‌پذیر را فقط نمایش دهیم ببینیم کد ما درست هست یا نه:

Python
for n in range(1, 10):
if n % 3 == 0 or n % 5 == 0:
print(n)

خروجی:

Code
3
5
6
9

خب تا این جا پس عددهای درست را توانستیم پیدا کنیم. حالا بیایید این‌ها را با هم جمع بزنیم تا به 23 برسیم.

Python
sum_all = 0
for n in range(1, 10):
print('checking ', n)
if n % 3 == 0 or n % 5 == 0:
print('zarib is fine for ', n)
sum_all = sum_all + n
print('total sum is ', sum_all)
print('total sum is ', me)

کاری که می‌کنیم این هست که ابتدا یک متغیر به نام sum_all با مقدار 0 قرار می‌دهیم و در هر تکرار حلقه هم این عدد را با عدد پیدا شده جمع می‌بندیم.

و در خط سوم هم نوشتیم checking که یعنی عدد حلقه را دارد چک می‌کند و هر عددی که بخش‌پذیر باشد را در پرینت بعد شرط می‌نویسد.

خروجی را با هم ببینیم:

خب حالا برای این که کار مان را تمام کنیم کدهای دیباگ را کامنت می‌کنیم و رنج را هم به 1000 تغییر می‌دهیم:

Python
me = 0
for n in range(1, 1000):
# print('checking ', n)
if n % 3 == 0 or n % 5 == 0:
# print('zarib is fine for ', n)
me = me + n
# print('total sum is ', me)
print('total sum is ', me)

خروجی:

Code
total sum is 233168


تبریک! شما اولین مسئله اویلر را حل کردید.

نظرات