در این قسمت تیم کدگیت را با آموزش اعداد کامل در سی شارپ همراهی کنید. عددی کامل است که مجموع مقسومعلیههای آن برابر با خود عدد باشد. در این جلسه به پیاده سازی و انواع روش محاسبه اعداد کامل در ریاضیات میپردازیم. پیشنهاد میکنیم پیشنیازهای این آموزش را مطالعه کنید:
- توابع در سی شارپ
- Static در سی شارپ
- For در سی شارپ
اعداد کامل
عدد کامل Perfect Number، یک عدد صحیح مثبت است که برابر با مجموع مقسومعلیههای مثبت قبل از خود (همه مقسومعلیههای مثبتش غیر از خود عدد) باشد. همچنین بهطور هم ارز، یک عدد کامل، عددی است که نصف مجموع همه مقسومعلیههای مثبت خود باشد. (ویکیپدیا)
برای شناسایی یک عدد کامل تابعی را مینویسیم که با وارد کردن یک عدد به آن در خروجی به ما کامل بودن یا نبودن آن را نمایش دهد.
به عنوان مثال فرض کنید ما ورودی 15 داشته باشیم. کامل بودن آن را به صورت زیر بررسی میکنیم:
N = 15
مقسوم علیههای N = 1، 3 ، 5
مجموع مقسوم علیههای N = 1+3+5 = 9
همانطور که میبینید عدد 15 کامل نیست زیرا مجموع مقسومعلیههای آن برابر با 15 نمیشود. به عنوان مثالی دیگر عدد 6 را بررسی میکنیم:
N = 6
مقسوم علیههای N = 1، 2 ، 3
مجموع مقسوم علیههای N = 1+2+3 = 6
عدد 6 یک عدد کامل است.
پیاده سازی اعداد کامل در سی شارپ
برای پیاده سازی اعداد کامل در سی شارپ دو روش وجود دارد
- یک راه حل ساده این است که تمامی اعداد بین 1 و n-1 را بررسی کنید و ببینید که آیا یک مقسوم علیه است یا خیر. مجموع تمام مقسوم علیه ها را نیز بدست آورید. اگر این مجموع برابر با n باشد پس n یک عدد کامل است.
- یک روش کارامد دیگر این است که تا ریشه عدد n را بررسی کنید. اگر عدد i بر عدد n بخش پذیر باشد پس هردو عدد i و n/i را بر مجموع اضافه نمایید. (برای پیاده سازی ما از این روش استفاده میکنیم).
کد اعداد کامل در سی شارپ به صورت زیر است:
static bool isPerfect(int n) {
int sum = 1;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
if (i * i != n)
sum = sum + i + n / i;
else
sum = sum + i;
}
}
if (sum == n && n != 1)
return true;
return false;
}
public static void Main (string[] args)
{
Console.WriteLine ("Below are all perfect" + "numbers till 10000");
for (int n = 2; n < 10000; n++)
if (isPerfect(n))
Console.WriteLine (n + " is a perfect number");
Console.ReadKey ();
}
اعداد کامل از یک تا 10000 به صورت زیر میباشد:
Below are all perfectnumbers till 10000
6 is a perfect number
28 is a perfect number
496 is a perfect number
8128 is a perfect number