loading...

برنامه نویسی ایرانی

بازدید : 91
پنجشنبه 25 شهريور 1400 زمان : 19:10

البته ما می توانیم عوامل دو عدد را بیابیم ریاضی در برنامه نویسی و سپس بالاترین عامل مشترک را تعیین کنیم. هر چند که اعداد بزرگتر می شوند (مثلاً 155566328819) ، فاکتورسازی بی اثر می شود.

اینجاست که الگوریتم اقلیدس به نجات ما می آید. این الگوریتم برای اثبات آسان gcd (a، b) = gcd (b، r) استفاده می کند ، که وقتی a بر b تقسیم می شود ، یا فقط a٪ b باقی می ماند.

آیا می توانیم اعداد (x، y) را طوری پیدا کنیم که ux + vy = gcd (u، v) ؟. بی نهایت ریاضی در برنامه نویسی جفت وجود دارد - این لمای بزوت است. الگوریتم تولید چنین جفت هایی را Extended Euclidean Algorithm می نامند.

  1. غربال اراتوستن و غربال قطعه قطعه شده

ایجاد سریع اعداد اولیه در برخی مشکلات بسیار مهم است. بیایید به دنبال آن باشیم و غربال اراتوستن را معرفی کنیم. ایرانیان سایبر می توانید از غربال اراتوستن برای یافتن همه اعداد اول کوچکتر یا مساوی یک عدد مشخص شده N استفاده کنید یا اینکه بدانید یک عدد یک عدد اول است یا خیر.

ایده اصلی پشت غربال اراتوستن این است که در هر تکرار یک عدد اول جمع آوری می شود و همه مضرب های آن حذف می شوند. پس از اتمام فرآیند حذف ، همه اعداد بدون علامت که باقی می مانند اول هستند. فرض کنید می خواهیم همه اعداد اول را بین ریاضی در برنامه نویسی 2 تا 50 بیابیم. از 2 تا 50 را تکرار کنید. ما با 2 شروع می کنیم. از آنجا که بررسی نشده است ، یک عدد اول است. اکنون همه اعدادی را که به جز 2 ضرب می شوند بررسی کنید. حالا ما به شماره 3 می رویم. این بررسی نشده است ، بنابراین یک عدد اول است. اکنون همه اعدادی را که مضرب 3 هستند به جز 3 بررسی کنید. حالا به 4 بروید. می بینیم که این علامت خورده است - این مضرب 2 است! بنابراین 4 اول نیست. ما این کار را ادامه می دهیم.

اگر تعداد زیاد باشد (مثلاً 10^16) ، در این صورت ما به غربال قطعه قطعه نیاز داریم.

ایده غربال تقسیم بندی شده این است که محدوده [0..n-1] را در بخشهای ریاضی در برنامه نویسی مختلف تقسیم کرده و اعداد اول را در همه بخشها یک به یک محاسبه کنید. این الگوریتم ابتدا از Simple Sieve برای یافتن اعداد کوچکتر یا مساوی؟ (n) استفاده می کند. در زیر مراحل استفاده شده در غربال قطعه بندی شده آمده است.

  1. از Simple Sieve برای یافتن تمام اعداد اول تا ریشه مربع 'n' استفاده کنید و این اعداد اولیه را در یک آرایه "prime []" ذخیره کنید. اعداد اولیه را در یک آرایه ‘prime [] ذخیره کنید.
  2. ما به همه اعداد اول در محدوده [0..n-1] نیاز داریم. ریاضی در برنامه نویسی ما این محدوده را به بخشهای مختلف تقسیم می کنیم به طوری که اندازه هر بخش حداکثر است. n

البته ما می توانیم عوامل دو عدد را بیابیم ریاضی در برنامه نویسی و سپس بالاترین عامل مشترک را تعیین کنیم. هر چند که اعداد بزرگتر می شوند (مثلاً 155566328819) ، فاکتورسازی بی اثر می شود.

اینجاست که الگوریتم اقلیدس به نجات ما می آید. این الگوریتم برای اثبات آسان gcd (a، b) = gcd (b، r) استفاده می کند ، که وقتی a بر b تقسیم می شود ، یا فقط a٪ b باقی می ماند.

آیا می توانیم اعداد (x، y) را طوری پیدا کنیم که ux + vy = gcd (u، v) ؟. بی نهایت ریاضی در برنامه نویسی جفت وجود دارد - این لمای بزوت است. الگوریتم تولید چنین جفت هایی را Extended Euclidean Algorithm می نامند.

  1. غربال اراتوستن و غربال قطعه قطعه شده

ایجاد سریع اعداد اولیه در برخی مشکلات بسیار مهم است. بیایید به دنبال آن باشیم و غربال اراتوستن را معرفی کنیم. ایرانیان سایبر می توانید از غربال اراتوستن برای یافتن همه اعداد اول کوچکتر یا مساوی یک عدد مشخص شده N استفاده کنید یا اینکه بدانید یک عدد یک عدد اول است یا خیر.

ایده اصلی پشت غربال اراتوستن این است که در هر تکرار یک عدد اول جمع آوری می شود و همه مضرب های آن حذف می شوند. پس از اتمام فرآیند حذف ، همه اعداد بدون علامت که باقی می مانند اول هستند. فرض کنید می خواهیم همه اعداد اول را بین ریاضی در برنامه نویسی 2 تا 50 بیابیم. از 2 تا 50 را تکرار کنید. ما با 2 شروع می کنیم. از آنجا که بررسی نشده است ، یک عدد اول است. اکنون همه اعدادی را که به جز 2 ضرب می شوند بررسی کنید. حالا ما به شماره 3 می رویم. این بررسی نشده است ، بنابراین یک عدد اول است. اکنون همه اعدادی را که مضرب 3 هستند به جز 3 بررسی کنید. حالا به 4 بروید. می بینیم که این علامت خورده است - این مضرب 2 است! بنابراین 4 اول نیست. ما این کار را ادامه می دهیم.

اگر تعداد زیاد باشد (مثلاً 10^16) ، در این صورت ما به غربال قطعه قطعه نیاز داریم.

ایده غربال تقسیم بندی شده این است که محدوده [0..n-1] را در بخشهای ریاضی در برنامه نویسی مختلف تقسیم کرده و اعداد اول را در همه بخشها یک به یک محاسبه کنید. این الگوریتم ابتدا از Simple Sieve برای یافتن اعداد کوچکتر یا مساوی؟ (n) استفاده می کند. در زیر مراحل استفاده شده در غربال قطعه بندی شده آمده است.

  1. از Simple Sieve برای یافتن تمام اعداد اول تا ریشه مربع 'n' استفاده کنید و این اعداد اولیه را در یک آرایه "prime []" ذخیره کنید. اعداد اولیه را در یک آرایه ‘prime [] ذخیره کنید.
  2. ما به همه اعداد اول در محدوده [0..n-1] نیاز داریم. ریاضی در برنامه نویسی ما این محدوده را به بخشهای مختلف تقسیم می کنیم به طوری که اندازه هر بخش حداکثر است. n

نظرات این مطلب

تعداد صفحات : -1

درباره ما
موضوعات
آمار سایت
  • کل مطالب : 319
  • کل نظرات : 0
  • افراد آنلاین : 2
  • تعداد اعضا : 0
  • بازدید امروز : 317
  • بازدید کننده امروز : 1
  • باردید دیروز : 101
  • بازدید کننده دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 1124
  • بازدید ماه : 2527
  • بازدید سال : 9622
  • بازدید کلی : 37133
  • <
    پیوندهای روزانه
    اطلاعات کاربری
    نام کاربری :
    رمز عبور :
  • فراموشی رمز عبور؟
  • خبر نامه


    معرفی وبلاگ به یک دوست


    ایمیل شما :

    ایمیل دوست شما :



    کدهای اختصاصی