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

C++의 부분 표본 시퀀스

<시간/>

분할 순서 는 특별한 숫자 시퀀스입니다. 수열은 숫자 자체에서 시작하고 수열의 다음 수는 이전 항의 고유 약수의 합입니다.

개념을 더 잘 배우기 위해 시퀀스의 예를 들어 보겠습니다. −

입력 :8출력 :8 7 1 0설명 :8의 고유약수는 4, 2, 1입니다. 합은 7 7의 고유약수는 1입니다. 합은 1입니다. 1의 고유약수는 0입니다. 합은 0 

완전수는 길이가 1인 부분표본 시퀀스를 갖는 수입니다. 예를 들어 6은 완전수입니다.

우호적 수는 길이가 2인 분취 서열을 갖는 수입니다. 예를 들어 1은 우호적인 숫자입니다.

Sociable number는 길이가 3인 aliquot 시퀀스를 갖는 숫자입니다. 예를 들어 7은 사교적인 숫자입니다.

숫자에서 액열을 계산합니다. 항의 적절한 제수를 계산해야 합니다. 이것을 계산하기 위해 우리는 나눗셈 알고리즘을 사용할 것입니다.

알고리즘

1단계:숫자를 초기화합니다.2단계:숫자의 모든 적절한 약수를 찾습니다.3단계:모든 적절한 약수의 합을 계산합니다.4단계:합계를 인쇄하고 1단계로 이동하여 이 합으로 숫자를 초기화합니다. .

예시

#include 네임스페이스 std;int Sumfactorial(int n){ int sum =0; for (int i=1; i<=sqrt(n); i++){ if (n%i==0){ if (n/i ==i) sum =sum + i; else{ 합계 =합계 + 나; 합계 =합계 + (n / i); } } } 반환 합계 - n;}void Aliquotsequence(int n){ printf("%d ", n); unordered_set s; s.삽입(n); 정수 다음 =0; 동안 (n> 0){ n =합(n); if (s.find(n) !=s.end()){ cout <<"\n" < 

출력

45 33 15 9 4 3 1 0