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
广告