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

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

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

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

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

 

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

 

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

 

 

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

فرمول گوس

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

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

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

 

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

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

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

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

۱۳ دیدگاه

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

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

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

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

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

  • به زبان python

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

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

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

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

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

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

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

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

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

نظر خود را بنویسید.

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