C编程中的超级完美数

超完美数的概念类似于完美数。它由D Suryanarayana于1969年发现。他将超完美数字推广为满足以下公式的数字:

sig(sig(n)) = 2n

sig(n)是计算一个数的除数之和的函数,也称为除数求和函数。

以下示例使您清楚了解了这个概念:

我们需要检查数字N是否为超完美数字:

N = 16

输出结果

yes

解释-检查一个数字是否是一个完美的数字,我们将找到其除数之和。

sig(16) = 1 + 2 + 4 + 8 + 16 = 31 ( divisors of 16 are 1, 2, 4, 8, 16 1, 2, 4, 8, 16)

sig( 31) = 1 + 31 = 32( 31 is a prime number)

2*n = 32 = sig(sig(n))

这表明16是一个极好的数字。

现在让我们看一个非完美数字的例子。

n = 6

sig(6) = 1 + 2 + 3 + 6= 12

sig(12) = 1 + 2 + 3 + 4 +6 + 12 = 28

6*2 = 12 != 28.

这表明6不是一个超完美的数字

示例

#include<stdio.h>

//function to find the sum of divisors of num

int divisorsum(int n){

   int sum = 0; // intialising the sum

   for (int i=1; i*i <= n; ++i){

      if (n%i == 0) { // find the sum of divisors

         if (i == (n/i))

            sum += i;

         else

            sum += (i + n/i);

      }

   }

   return sum;

}

int main() {

   int n = 16;

   int n1 = divisorsum(n);

   if(2*n == divisorsum(n1)){

      printf("The number %d is a superperfect number", n);

   } else{

      printf("The number %d is not a superperfect number", n);

   }

   return 0;

}

输出结果

The number 16 is a super perfect number

以上是 C编程中的超级完美数 的全部内容, 来源链接: utcz.com/z/360659.html

回到顶部