Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cプログラミングにおける超完全数


超完全数の概念は完全数に似ています。 1969年にDSuryanarayanaによって発見されました。彼は超完全数を次の式を満たす数として一般化しました:

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

  1. C#でのソケットプログラミング

    System.Net.Sockets名前空間には、WindowsSocketsインターフェイスの管理された実装があります。 同期モードと非同期モードの2つの基本モードがあります。 System.Net.Sockets.TcpListenerクラスを操作する例を見てみましょう- TcpListener l = new TcpListener(1234); l.Start(); // creating a socket Socket s = l.AcceptSocket(); Stream network = new NetworkStream(s); 以下は、TCP/IPネットワークでの

  2. Linuxシェルプログラミングの数学的側面–パートIV

    この投稿では、S criptsについて説明します。 数学から および番号 視点。もっと複雑なスクリプトを投稿しましたが(シンプルな電卓 )前回の投稿でしたが、ユーザーの側では理解するのが難しかったので、小さなパケットで学習することのもう1つの便利な側面を人々に学んでもらうことを考えました。 この記事の前に、シェルスクリプトシリーズの3つの記事 公開されており、次のとおりです。 Linuxシェルと基本的なシェルスクリプトを理解する–パートI シェルプログラミングを学ぶための5つのシェルスクリプト–パートII Linux BASHスクリプティングの世界を航海する–パートIII