اعداد اول prime numbers در متلب(جلسه چهل و هشتم)

اعداد اول در متلب
اعداد اول در متلب

در این دوره آنلاین آموزش متلب به صورت رایگان با سری آموزش‌های نرم افزار متلب در خدمت شما هستیم. در واقع آنچه که شما به طور کاملا عملی برای استفاده در انجام پروژه متلب نیاز دارید در این جلسات ارائه خواهد شد.

جلسه‌ی پیش با حل تمرین در متلب (جمع بندی نکات تمرینات متلب) آموزش مقدماتی متلب را پیش بردیم. در این جلسه می‌خواهیم به سراغ تمرین سوم که راجع به اعداد اول یا prime numbers در متلب است برویم. اما در ابتدا بایستی با مفهوم واژه Prime آشنا شویم.

مفهوم واژه prime

Prime یعنی اول و primitive یعنی اولیه.

چگونه می‌توانیم تشخیص دهیم که اعدادی مانند ۲ یا ۵ عدد اول هستند؟ تعریف عدد اول این است: «عددی است که بر هیچ عددی به جز خودش و عدد یک بخش‌پذیر نمی‌باشد». اگر عددی اول نباشد، مرکب است. اعداد اول جزء یکی از معماهای ریاضی هستند و هنوز کسی فرمولی برای آنها به دست نیاورده است.

وارد برنامه متلب می‌شویم. برای مثال وقتی بخواهیم بررسی کنیم ببینیم این عدد اول است یا خیر، رادیکال ۱۱ یعنی sqrt(11) را می‌نویسیم. که می‌شود ۳.۳۱

آن را ذخیره می‌کنیم. روی ۴ می‌رسد بعد تا ۴ را بررسی می‌کنیم. یعنی ۲ و ۳ و ۴ را بررسی می‌‌کنیم و می‌بینیم که آیا ۱۱ به این اعداد بخش پذیر است یا خیر؟ آیا ۱۱ به ۲ بخش‌پذیر است؟ خیر

به ۳ بخش‌پذیر است؟ خیر

به ۴ بخش‌پذیر است؟ خیر

اگر به این‌ها بخش‌پذیر نباشد، به بقیه اعداد هم بخش‌پذیر نیست. برای مثال می‌خواهیم مقسوم‌علیه‌های عدد ۳۰ را بنویسیم.

یکی ۱ است که خارج قسمت همان ۳۰ می‌شود. یکی ۲ دو است که خارج قسمت آن ۱۵ است. یکی ۳ است که خارج قسمت آن ۱۰ است و یکی هم ۵ است که خارج قسمت آن ۶ است. مشاهده می‌کنید که تا همین‌جا کافی است. زیرا بعد از ۵ دقیقا قرینه‌ی همین اعداد است.

مثلا اگر ۶ را اضافه کنیم ۶×۵ می‌شود و اگر ۱۰ را اضافه کنیم، ۱۰×۳ می‌شود و اگر ۱۵ را اضافه کنیم، ۲×۱۵ می‌شود و در آخر هم خود ۳۰ را داریم.

بدست آوردن رادیکال 11
بدست آوردن رادیکال 11 در Matlab

پس اگر یک طرف این‌ها را بررسی کنیم همه بررسی می‌شوند.

الان اگر رادیکال ۳۰ را هم بزنیم، مشاهده می‌کنیم که ۵.۴۷ می‌شود. پس متوجه می‌شویم که تا ۶ یا همان ۵ بررسی کنیم، کافی است.

محاسبه رادیکال 30 و نمایش نتیجه آن
محاسبه رادیکال 30 و نمایش نتیجه آن

پس برای اینکه بررسی کنیم که عدد n اول است یا خیر، باید بخش‌پذیری عدد n بر اعداد ۲ تا  را بررسی کنیم.

گفتیم ۲ تا …؛ در اینجا از «تا» صحبت شده است.  پس برای نوشتن برنامه از for استفاده می‌کنیم یعنی تکرار یک حلقه.

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

بنابراین از ۲ تا  را بررسی می‌کنیم. اگر n بر هیچ کدام از اعداد بازه بخش‌پذیر نبود، آنگاه آنn  اول است. باید توجه داشته باشید که خود ۲ را همیشه اول در نظر می‌گیریم که داخل الگوریتم نیاید.

حال به سراغ برنامه می‌رویم تا شروع به نوشتن آن کنیم.

یک script جدید باز می‌کنیم.

باز کردن یک script جدید
باز کردن یک script جدید

نام آن را هم prime numbers قرار می‌دهیم.

تغییر نام به prime numbers
تغییر نام به prime numbers
بستن health index و بازکردن prime number
بستن health index و بازکردن prime number

Health index را می‌بندیم زیرا کارمان با آن تمام شد.

حال به سراغ prime numbers می‌رویم. ابتدا یک clc می‌زنیم. مثل همیشه صفحه را clear می‌کنیم و close all را هم می‌زنیم و یک display می‌زنیم برای مثال می‌خواهیم display کنیم prime numbers

بعد از nای داریم که این n ، input دارد و می‌گوید enter a positive integer number که integer از انتگرال یا جزء صحیح می‌آید، معنی کلی آن هم این می‌شود که یک عدد صحیح مثبت را وارد کنید.

پس یک input داریم که می‌گوید که یک عدد صحیح مثبت را برای بررسی اول بودن آن وارد کنید.

اصل را بر این گذاشتیم که این عدد، عدد اولی است مگر این‌که عکس آن ثابت شود. پس می‌گوییم که isprime = true یعنی صحیح است. یعنی این عدد، عددی اول است. حال می‌گوییم برای i از ۲ floor می‌کنیم. floor کردن یعنی چه؟ یعنی برای مثال   که می‌شد ۳ و خورده‌ای، همان ۳ در نظر می‌گیریم زیرا تا ۳ هم بررسی کنیم، برایمان کافی است. sqrt (n) را Floor می‌کنیم که قبلا در مورد آن توضیح دادیم.

بعد می‌خواهیم ببینیم بخش‌پذیر است یا خیر. برای بخش‌پذیری از یک تابعی به نام mod استفاده می‌کنیم. mod باقی‌مانده را محاسبه می‌کند. می‌دانید که اگر باقی‌مانده تقسیم عددی بر عدد دیگر برابر صفر باشد، یعنی این‌که بر آن عدد بخش‌پذیر است. پس می‌گوییم if mod (n , i) ==0 در این صورت Isprime = false یعنی دیگر برقرار نیست.

پس اگر false شد، break کند و از برنامه بیرون بیاید و end کند و کلا for را هم end کند.

حال اگر Isprime صحیح بود، چه کار کند؟ ابتدا num2str(n) را display کند و بگوید که is a prime number یعنی آن یک عدد اول است.

و در غیر این صورت یعنی else، display کند که num2str(n) is not prime number و بعد از آن هم if اولی را end می‌کنیم که برنامه را ببندیم.

نوشتن برنامه به صورت کامل
نوشتن برنامه به صورت کامل

الان برنامه ما برای اعداد اول نوشته شد که آن را run می‌کنیم.

run کردن برنامه
run کردن برنامه

می‌گوید که برنامه prime numbers اجرا شده است. از ما می‌خواهد یک عدد مثبت صحیح وارد کنیم. برای مثال عدد ۵ را وارد می‌کنیم.

وارد کردن یک عدد مثبت صحیح
وارد کردن یک عدد مثبت صحیح

می‌گوید که 5 Is a prime number

می‌گوید که 5 یک prime number است
می‌گوید که 5 یک prime number است

حال دوباره آن را run می‌کنیم.

run کردن مجدد برنامه
run کردن مجدد برنامه

این بار عدد ۷۷ را وارد می‌کنیم.

نوشتن عدد 77
نوشتن عدد 77

می‌گوید 77 is not a prime number یعنی ۷۷ یک عدد اول نیست.

در اینجا عدد 77 prime number نیست
در اینجا عدد 77 prime number نیست

حال بار دیگر برنامه را run می‌کنیم و یک عدد دیگر وارد می‌کنیم.

run کردن مجدد برنامه و نوشتن عدد جدید
run کردن مجدد برنامه و نوشتن عدد جدید

برای مثال ۱۱ را وارد می‌کنیم.

نوشتن عدد جدید مثلا 11 در برنامه
نوشتن عدد جدید مثلا 11 در برنامه

می‌گوید که ۱۱ یک عدد اول است.

11 Prime number است
11 Prime number است

بار دیگر برنامه را run می‌کنیم و عدد ۸۹ را وارد می‌کنیم.

run کردن مجدد برنامه و نوشتن عدد 89
run کردن مجدد برنامه و نوشتن عدد 89

که می‌گوید ۸۹ عدد اول است.

در اینجا می‌گوید 89 یک prime number است
در اینجا می‌گوید 89 یک prime number است

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

در جلسه آینده با حل تمرین در متلب در خدمت شما خواهیم بود

در صورتی که شما پس از خواندن محتوای جلسات قبلی و این بخش که به ساده‌ترین زبان ممکن درباره‌ی برنامه‌ی متلب و محیط کاربری آن توضیح داده باز هم سردرگم هستید. می‌توانید با برون سپاری انجام پروژه متلب خود به کارشناسان حرفه‌ای کارت پروژه می‌باشد. میتوانید از طریق شماره‌ی 09104503300 با پشتیبانان کارت از طریق پیام یا تماس در ارتباط باشید.

برای کسب اطلاعات بیشتر در مورد متلب میتوانید به مقاله آموزش متلب مقدماتی مراجعه کنید.

برای ثبت سفارش لطفا در تلگرام یا واتساپ یا ایتا به شماره 09104503300 پیام دهید.