Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 프로그래밍의 완전수

<시간/>

초완전수의 개념은 완전수와 유사합니다. 1969년 D Suryanarayana에 의해 발견되었습니다. 그는 초완전수를 다음 공식을 만족하는 수로 일반화했습니다.

시그(시그(n)) =2n

여기서 sig(n)은 숫자의 제수의 합을 계산하는 함수로, 제수 합산 함수라고도 합니다.

이 개념을 명확하게 하는 다음 예:

숫자 N이 완전수인지 아닌지 확인해야 합니다.

N =16

출력

<예>예

설명 − 어떤 수가 완전수인지 확인하기 위해 약수의 합을 찾습니다.

sig(16) =1 + 2 + 4 + 8 + 16 =31 ( 16의 제수는 1, 2, 4, 8, 16 1, 2, 4, 8, 16)sig( 31) =1 + 31 =32( 31은 소수)2*n =32 =sig(sig(n))

이것은 16이 완전수임을 보여줍니다.

이제 완전수가 아닌 숫자의 예를 살펴보겠습니다.

n =6sig(6) =1 + 2 + 3 + 6=12sig(12) =1 + 2 + 3 + 4 +6 + 12 =286*2 =12 !=28.

이것은 6이 초완벽한 숫자가 아님을 보여줍니다.

예시

#include//numint divisorsum(int n){ int sum =0; // 합계 초기화 for (int i=1; i*i <=n; ++i){ if (n%i ==0) { // 제수의 합 찾기 if (i ==(n/i )) 합계 +=나; 그렇지 않으면 합계 +=(i + n/i); } } 반환 합계;}int main() { int n =16; int n1 =제수(n); if(2*n ==divisorsum(n1)){ printf("숫자 %d는 완전수입니다.", n); } else{ printf("숫자 %d는 완전수가 아닙니다", n); } 반환 0;}

출력

숫자 16은 초완벽한 숫자입니다