در این مقاله می خواهیم با هم یک برنامه ساده را با استفاده از زبان برنامه نویسی پایتون پیاده سازی کنیم که در آن می توانیم تشخیص دهیم یک عدد اول است یا نه ؟ و بعد با تبدیل کردن برنامه خود به یک فانکشن از آن استفاده کرده و تمام اعداد اول موجود در یک بازه عددی را محاسبه کنیم.
اعداد اول و مرکب چیستند؟
به عکس زیر توجه کنید :
اعدادی که دایره قرمزرنگ دور آنها است اول هستند . یعنی بر هیچ عدد صحیحی جز 1 و خودشان بخش پذیر نیستند. سایراعداد که بر اعداد اول بخش پذیر هستند مرکب نامیده می شوند.
یعنی 2 که فقط بر 1 و خودش بخش پذیر است یک عدد اول است و 4 که بر 2 و 1 و خودش بخش پذیر است عددی مرکب است . یا عدد 3 فقط بر 3 و 1 بخش پذیر است و 9 بر 1 و 3 و 9 بخش پذیر است بنابر این 9 عددی مرکب و 3 عددی اول است . یا عدد 10 هم به 5 و هم 2 که اول هستند بخش پذیر است و 10 عددی مرکب است .
پیاده سازی
در ابتدا یک فایل .py ( پسوند پایتون ) می سازیم تا کد های برنامه را در آن قرار دهیم . به عنوان اولین خط متغیر number را تعریف میکنیم که در آن عددی که میخواهیم بررسی کنیم آمده است .
number = 20 # you can change this variable
سپس یک متغیر به نام result ثبت میکنیم و مقدار آن را True قرار می دهیم . منظورمان از این result اول بودن عدد است یعنی به صورت پیش فرض گفته ایم عدد ما اول است مگر این که خلافش ثابت شود.
result = True
حالا باید یک حلقه for ایجاد کنیم و در آن جز صحیح خارج قسمت عددمان بر 2 را محاسبه کرده و با یک جمع میکنیم و در یک range قرار می دهیم .
وقتی میخواهید بررسی کنید ببینید یک عدد اول است یا نه , مثلا عدد 10 , نمی آیید و عدد 10 را بر اعداد 2 تا 9 تقسیم کنید . بلکه تا عدد 5 بیشتر پیشروی نمی کنید . این کار به این خاطر است که در صورتی که 10 را بر 6 تقسیم کنیم عدد حاصل از 2 کم تر می شود بنابر این نباید از نصف عدد بیشتر پیشروی کنیم.
در این مثال چون فانکشن range آخرین مورد را در نظر نمی گیرد ( یعنی شما اگر پایان را 10 وارد کنید یک لیست تا 9 (و شامل 9 ) می سازد ولی 10 را اضافه نمیکند . به همین دلیل در صورتی که می خواهید 10 هم شامل آن باشد باید انتها را 11 وارد کنید . در این جا ما هم می دانیم خارج قسمت صحیح عددمان بر 2 چقدر است ولی بخاطر این مورد در range باید یکی به آن اضافه کنیم.
حالا حلقه ما تشکیل داده شده است , لازم است تا با یک شرط ساده بررسی کنیم که آیا عدد ما بر عدد در حلقه بخش پذیر است ؟ و باقی مانده آن بر 2 0 می شود ؟ در صورتی که این اتفاق بیفتد مشخصا باید عدد ما مرکب باشد پس result را به False تغییر داده و break میکنیم تا دیگر ادامه ندهد * زیرا متوجه شده ایم که عدد ما اول نیست و همین یک مثال نقض کافی است *
number = 20 # you can change this variable
result = True #As default we set this variable True ( Means My number is Prime )
for i in range(2 , (number//2)+1):
if number % i == 0:
result = False
بعد از این حلقه می توانیم با بررسی کردن result پی ببریم که اگر result برابر با True بود یعنی عدد اول است و در غیر این صورت عدد مرکب است .
if result == True:
print("your number is prime")
else:
print("your number is not prime")
حالا در خط اول برای این که بتوانید اعداد مختلفی را امتحان کنید می توانید مقدار متغیر number را تغییر دهید یا یک ورودی از کاربر بگیرید و مقدار number را برابر با مقدار وارد شده توسط کاربر قرار دهید .
تبدیل به فانکشن
حالا می خواهیم کدی که نوشته ایم را تبدیل به فانکشن کنیم :
def check(number):
result = True
for i in range(2 , (number//2)+1):
if number % i == 0:
result = False
return result
با فانکشن بالا ورودی که تحت number می دهیم بررسی می شود و مقدار boolean بر می گردد و در صورتی که True باشد یعنی عدد اول و در صورتی که False باشد یعنی عدد فرد است .
بدست آوردن تمام اعداد اول در یک محدوده عددی
انجام این کار خیلی ساده است فقط کافی است یک حلقه قرار داده و از تابعی که نوشته ایم استفاده کنید.
start = 10
end = 100
numbers = list()
for i in range(start , end+1):
if check(i)==True:
numbers.append(i)
کد بالا را به زیر فانکشن اضافه میکنیم و به صورت زیر در می آوریم :
def check(number):
result = True
for i in range(2 , (number//2)+1):
if number % i == 0:
result = False
return result
start = 10
end = 100
numbers = list()
for i in range(start , end+1):
if check(i)==True:
numbers.append(i)
در کد بالا نقطه شروع و پایان را مشخص کرده ایم و با استفاده از حلقه for اعداد این محدوده را بدست آورده و با استفاده از فانکشنی که نوشتیم اول بودن یا نبودن را بررسی کردیم و در صورتی که عدد ما اول بود آن را به لیست numbers اضافه کردیم . در نهایت می توانید تمام اعداد اول بدست آمده را چاپ کنید
print(numbers)
شما چه نظری دارید ؟ با ما به اشتراک بگذارید.