پروژه اویلر یا Project Euler جزو مسائل و پروژههایی در دنیای اینترنت هستند که مسائل را شما به هر زبان برنامهنویسی و به هر شکلی میتوانید حل کنید اما مهم این است که پاسخ نهایی صحیح باشد. مسائل اویلر را در سایت Project Euler میتوانید مشاهده کنید. من در این مطلب اولین مسئله را برای شما حل میکنم.
مطلوب مسئله به زبان انگلیسی
مطلوب مسئله به زبان انگلیسی را ابتدا ببینیم:
نقل قولEach new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2 the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
مطلوب مسئله به زبان فارسی
مطلوب مسئله به زبان فارسی را حالا بررسی کنیم:
دنباله یا اعداد فیبوناچی، اعدادی هستند که از حاصل جمع دو عدد قبلی به دست میآیند. مطلوب است که مجموع اعداد زوج این دنباله به شرطی که عدد آخر از چهار میلیون بزرگتر نباشد را پیدا کنید.
توضیح در مورد دنباله فیبوناچی نیز لازم است بدهیم که این دنباله با اعداد ۱ و ۲ شروع میشود که حاصل جمع این دو میشود عدد ۳، و سپس دو عدد ۲ و ۳ با هم جمع میشوند که برابر میشود با ۵ و به همین شکل تا بینهایت ادامه پیدا میکند.
راهحل
راه حل چیست؟ با هم پیش برویم تا مسئله را حل کنیم.
برای این کار ابتدا یک تابع مینویسیم که اصلا ببینیم پایتون زوج بودن عدد را که یکی از مطلوب های مسئله هست درست تشخیص میدهد یا خیر:
حالا کافی است که تابع را یک بار صدا بزنیم تا ببینیم درست کار میکند.
خروجی:
پس تابع الان درست کار میکند.
حالا من سه متغیر تعریف میکنم تا عدد اول، عدد دوم و جمع دو عدد را در خودش ذخیره کند.
پس از این سه متغیر هم خود تابع بالا را قرار میدهم و سپس به مطلوب در یک حلقه while میرسیم تا این کار را آنقدر تکرار کند تا تمام شود.
first = 1
second = 2
jam = 0
def is_even(n):
if n % 2 == 0:
return True
else:
return False
while first < 4*10**6:
if is_even(first):
jam += first
new = first + second
first = second
second = new
print(f'total jam is {jam}')
بیشتر
در حلقه while شرط میگذاریم تا زمانی که متغیر first از عدد چهار میلیون کوچکتر بود این حلقه ادامه پیدا کند. سپس شرط دیگری میگذاریم که اگر عدد first زود بود با متغیر jam جمع شود و jam آپدیت شود.
بعد هم متغیر جدیدی به نام new میسازیم که دو عدد قبلی را با هم جمع ببندد.
سپس در تکرار بعدی، عدد first را برابر با second قرار میدهیم و عدد second را هم تعریف میکنیم که عدد جدید ما باشد.
در پایان هم نتیجه نهایی را پرینت میکنیم که به عدد 4613732 میرسیم.
اما برای عیبیابی و کوچک کردن خروجی میتوانیم از عدد کوچکتری در این حلقه استفاده کنیم و بعضی جا ها هم تابع print را صدا بزنیم که خروجیها را ببینیم.
while first < 40:
if is_even(first):
print(f'first number is {first}')
jam += first
print(f'jam number is {jam}')
new = first + second
first = second
second = new
خروجی:
first number is 2
jam number is 2
first number is 8
jam number is 10
first number is 34
jam number is 44
total jam is 44
همانطور که میبینید عدد آخر ما ۳۴ هست که از ۴۰ کوچکتر هست طبیعتا و حلقه دیگر ادامه پیدا نکرد و ۴۴ هم جمع ۱۰ و ۳۴ هست که دو عدد آخر هستند.
- مسئله اویلر
- پروژه اویلر
- سوال اویلر
- euler project
- python euler project
- حل مسئله دوم اویلر با پایتون
- مسئله دوم اویلر پایتون
- solve 2nd euler project
- solve 2nd euler project python
نظرات
Newly created comments need to be manually approved before publication, other users cannot see this comment until it has been approved.
Newly created comments need to be manually approved before publication, other users cannot see this comment until it has been approved.