اعداد کامل در سی پلاس پلاس

اعداد کامل در سی پلاس پلاس

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




اعداد کامل

عدد کامل 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 را بر مجموع اضافه نمایید. (برای پیاده سازی ما از این روش استفاده می‌کنیم).
بیشتر بخوانید:  دانلود سورس الگوریتم دایکسترا در سی پلاس پلاس

کد اعداد کامل در سی پلاس پلاس به صورت زیر است:

int main() {
    cout << “Below are all perfect ” << “numbers till 10000” << endl;
    for (int n = 2; n < 10000; n++)
         if (isPerfect(n))
             cout << n << ” is a perfect number” << endl;
    return 0;
}
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;
}

اعداد کامل از یک تا 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

دانلود سورس کد:

پسورد: www.codegate.ir

دیدگاهتان را بنویسید

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