پروژه خیام ۱ : یافتن مجموع ضرایب ۳ و ۵ کوچک تر از ۱۰۰۰

برنامه پیدا کردن ضرایب 3و5

به عنوان اولین برنامه در پروژه خیام : برنامه نویسی با طعم ریاضی می خواهیم برنامه ای بنویسیم که مجموع ضرایب اعداد ۳و۵ را که کوچک تر از ۱۰۰۰ است را پیدا کند .همان طور که قبلا گفتیم در هر پست به سوال های سخت تری می پردازیم و روند ما از سوال های آسان به سخت است پس نگران این نباشید که این سوال آسان است، همین سوال نکته های جالبی دارد .

قبل از شروع اگر نمی دانید پروژه خیام : برنامه نویسی با طعم  ریاضی چیست اینجا کلیک کنید .

در این سوال از ما خواسته شده است که مجموع ضرایب ۳و۵ که کمتر از ۱۰۰۰ است را پیدا کنیم . خوب خیلی ساده است می توانیم حلقه هایی (Loop)  بگذاریم که مضارب ۳ و ۵ را تولید کند و اعداد تولید شده را با هم جمع کند. مانند حلقه های زیر( MaxNumber = 1000)

 

ولی این کافی نیست اگر توجه کنید می بینید که بعضی از اعداد دوبار تولید می شوند که این اعداد همان مضارب ۱۵ هستند پس برای حل این مشکل باید مضارب ۱۵ را از sum که مجوع اعداد تولیدیمان است کم کنیم :

 

خوب کد برنامه مجوع مضارب ۳ و ۵ کوچک تر ۱۰۰۰ این می شود :

 

 

ولی این راه اول بود راهی بهتر برای تولید ضرایب وجود دارد احتمالا همه ی شما فرمول گوس را که برای جمع اعداد ۱ تا  p است را می شناسید :

فرمول گوس

ولی شاید می پرسید ارتباط این فرمول با ضرایب چیست پس بیایید ضرایب را دقیق تر و با دید دیگری نگاه کنیم :

ضرایب 5ضرایب 3

حالا برنامه مجموع ضرایب ۵ و ۳ را با استفاده از فرمول گوس طور دیگر می نویسیم :

 

خوب اگر برنامه را اجرا کنیم عدد ۲۳۳۱۶۸ به دست می آید که مجموع ضرایب اعداد ۳ و ۵ کوچک تر از ۱۰۰۰ است .

مجوع ضرایب اعداد کوچک تر از 3 و 5

امیدوارم از حل این سوال لذت برده باشید اگر راه بهتری داشتید یا برنامه را با زبانی بجز سی پلاس پلاس نوشته اید حتما آن را برای ما ایمیل کنید ، کد شما در همین صفحه قرار خواهد گرفت با تشکر فراوان.

۱۳ نظر

  • توی این الگوریتم باید مضارب رو در آرایه digs بنویسی و مضارب مشترک رو به صورت منفی باشه تا جواب درست بدست بیاد.
    این روش رو میشه با کمی تغییر برای هر چند مضرب که بخوایم اصلاح نمود.

  • khengol-khan

    اگه این شکلی بنویسیم هم کوتاه تره هم سریعتر:
    for (i=1; i<1000;i++)
    if (i%5==0 || i%3==0) sum+=i
    الکی ۷ – ۸ خط اضافه کردین!

  • میشد به جای اینکه هر کدومو جمع کنیم بعد از اونا ضرایب ۱۵ رو کم کنیم تو شرط بگیم اگه مضرب ۳ “و” ۵ بود جمع کنیم

    • فرهاد دلیرانی

      بهترش همون چیزی که شما می گید ولی برای استفاده از فرمول گوس باید مضارب ۱۵ کم کرد از مجموع ضرایب ۳ و ۵

  • به زبان python

    • فرهاد دلیرانی

      سعید @ خیلی خوشحال شدم یک طراح وب و توسعه دهنده برای مابرنامه ارسال کرده است.چند وقته زبان python رو به دلیل روانی و تمیزی در کد و سازگاری با بسیاری از سیستم عامل ها در برنامه ام گذاشتم که یاد بگیرم.

      • خواهش میکنم فرهاد جان
        برای شروع یادگیری زبان python میتونی از این سایت استفاده کنی
        codecademy.com

        این سایت هم یک سایت حل مسائل برنامه نویسی به زبان پیتون در قالب یک محیط جذاب و فان است
        checkio.org

        موفق باشی

  • اینم برنامه من با زبان برنامه نویسی elixir

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

    • فرهاد دلیرانی

      sara @ زبان برنامه نویسیتون خیلی عجیبه حتی تا حالا اسم elixir نشنیدم، دستوراتش هم عجیبه.تو نظر قبل هم گفتن اون حلقه ها ناشی از وسواس غیر منطقی بود.

  • به نظرم اگر برنامه بدون حلقه نوشته شود کارایی بالاتری خواهد داشت.
    من از همون فرمول گوس استفاده کردم و برنامه رو دوباره نوشتم.

    • فرهاد دلیرانی

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

نظرتان را برای ما بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *