مجموع اعداد زوج در دنباله فیبوناچی

دنباله فیبوناچی، دنباله‌ایه که جمله‌ی جدیدش از جمع دوتا جمله‌ی قبلیش، شکل می‌گیره، مثلا اگر دوتا جمله‌ی قبلیش 5 و اونیکی 8 باشه، جمله‌ای که الان توش هستیم می‌شه 8+5 یعنی 13.

به طور کلی، یه دنباله‌ی فیبوناچی این شکلیه:

…,1,2,3,5,8,13,21,34,55,89,144

و قانونش اینه که جمله اول و دوم، یک و دو باشه.

سوال اینه: مجموع اعداد زوج توی این دنباله رو پیدا کن با این شرط که آخرین جمله‌ی این دنباله، از چهار میلیون تجاوز نکنه.

سوال رو بشکونیم:

1-باید دنباله‌ی فیبوناچی رو تعریف کنیم، یعنی باید دوتا متغیر داشته باشیم که جمله‌ی اول و دوم دنباله که یک و دو هست رو توی خودش save کنه. این دوتا متغیر رو می‌گیریم a و b

2-چه اعدادی زوج‌ان؟ اعدادی که باقی‌موندشون توی تقسیم به دو، برابر صفر بشه. یعنی یه شرط می‌خوایم که توی این شرط فقط عددی اجازه‌ی حضور داشته باشه که باقی‌موندش به دو، صفر بشه یا به عبارتی زوج باشه.

3-می‌رسیم به شرطی که سوال گذاشته، سوال گفته دنباله رو تا جایی برو که آخرین جمله‌ات بیشتر از 4 میلیون نشه، پس باید یه حلقه while هم داشته باشیم که تنها اعدادی از حلقه رد بشن که این شرط رو داشته باشن و وقتی عددمون به این شرط رسید، از حلقه بیاد بیرون. (چون دیگه صدق نمی‌کنه)

4-یه متغیر هم می‌خوایم که مجموع اعداد زوج رو ذخیره کنه. این متغیر رو می‌گیریم ans.

قبل از حلقه، اول متغیرهایی که می‌خوایم رو تعریف می‌کنیم.

حل سوال با پایتون:

تیکه‌ی مهم این برنامه توی خط هفتمه

خط 7 چی می‌گه:

در واقع ما توی جملات فیبوناچی داریم حرکت می‌کنیم رو به جلو، a و b هم مدام دارن نقش دوتا جمله‌ی قبلی رو بازی می‌کنن، وقتی یک گام رو به جلو می‌رویم، a جای خودش رو می‎ده به b، و در عین حال b هم می‌شه مجموع a و b. که این مجموع رو با c نشون دادیم.

مثلا فرض کنید داریم جمله‌ی ششم این دنباله که عدد 13 هست رو می‌سازیم، خب اینجا a می‌شه 5 و b می‌شه 3. حالا می‌ریم جمله‌ی هفتم یعنی 21 رو بسازیم، توی اینجا a می‌شه 5 که توی این مرحله a در واقع b مربوط به مرحله‌ی قبلیه. خط هفت اینجا همین حرف رو می‌خواد بزنه، و به طور طبیعی، b این مرحله می‌شه جمع a و b مرحله‌ی قبلی، که c تعریفش کردیم. کد جاوا رو ببینین اگر متوجه نشدید، متوجه شید:

حل سوال با جاوا:

چه عددی رو براتون چاپ کرد؟

مجموع مضرب‌های اعداد 3 و 5 تا زیر 1000 را پیدا کن

سوال اینه: بیا مضرب‌های 3 یا 5 رو تا زیر 1000 بچین کنار هم. بعد این‌هارو باهم جمع کن. جوابش رو بهم بگو

بهترین راهکار این است که مساله را به قدم‌های کوچک‌کوچک بشکونیم.

پس اول بیاید مضرب‌های 3 یا 5 رو تا زیر 10 لیست کنیم و باهم جمعشان کنیم:

3,5,6,9

جمع این‌ها 23 است.

ادامه لیست را چه اعدادی پر می‌کنند؟

3,5,6,9,12,15,18,20,21,…

 

 یعنی می‌شه نشست تا 999 اعداد رو دونه دونه شمرد و باهم جمع کرد

تو نتیجه نگیری میمیری؟

 

من بهترشو بگم؟ می‌شه اعداد رو تا 999 یکی یکی خفت کرد و ببینیم به 3 و 5 بخش‌پذیر هستن یا نه، بعد باهم جمعشون کنیم

توی برنامه‌نویسی برای اینکه بفهمیم عددی  به یه عددی دیگر بخش‌پذیر هست یا نه، باید بگوییم اگر این دوتا را به هم تقسیم کردیم و باقی‌مانده صفر شد یا به عبارتی کف ترازو چیزی نماند، می‌گوییم بخش‌پذیرند.

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

قبل از هر چیز باید بیرون حلقه یک متغیری تعریف کنیم که مقدارش صفر باشد و با جریان در حلقه، به طور مداوم یکی به آن اضافه گردد.

برای درکش همین خره رو در نظر بگیرین. فکر کنین این خره باید باقالی بار کنه. هر بار هم یه کیسه باقالی باید بار خره کنیم. پس دفعه اول که خره هست، باری روی دوشش نیست! ولی هر بار که میوفته توی حلقه یه کیسه به مجموع کیسه‌هاش اضافه می‌شه.

حالا خره رو ول کنیم، برگردیم سر داستان خودمون.

پس تا اینجا فهمیدیم که ما متغیری داریم که مقدار اولیه‌اش صفر است و هر بار که در حلقه می‌چرخد یکی به آن اضافه می‌گردد. (یعنی جمع‌ها رو ما هر بار می‌ریزیم توی این ظرفه.)  اگر اسم این ظرف را کاسه بگذاریم و عددی که هربار خفتش می‌کنیم بذاریم b:

 

kase=0

:(for b in range(1,1000

     :if b%3 == 0 or b%5 == 0

        kase=kase+b

(Print (kase

چه عددی را چاپ کرد؟

یه سوال، اگر گفته بود اعداد زیر 1000000000 را حساب کنید، باید چیکار می‌کردیم؟

باید می‌زدیم تو سر خودمون

کد پایتون:

کد جاوا:

سوال: مجموع مضرب‌های اعداد 3 یا 5 تا زیر 1000000000 را پیدا کن