Computer >> Máy Tính >  >> Lập trình >> C ++

Aliquot Sequot trong C ++

Chuỗi ngoại truyện là một dãy số đặc biệt. Dãy số bắt đầu từ chính số đó và số tiếp theo của dãy là tổng các ước số thích hợp của các số hạng trước đó.

Hãy lấy một ví dụ về trình tự để tìm hiểu khái niệm tốt hơn -

Input : 8
Output : 8 7 1 0
Explanation :
   Proper divisors of 8 are 4, 2, 1. The sum is 7
   Proper divisors of 7 are 1. The sum is 1
   Proper divisors of 1 are 0. The sum is 0

Số hoàn hảo là số có dãy số có độ dài là một. Ví dụ:6 là một số Hoàn hảo.

Số thân thiện là một số có dãy số có độ dài là hai. Ví dụ:1 là một số Thân thiện.

Số tương đối là một số có dãy số có độ dài là ba. Ví dụ:7 là một con số Hòa đồng.

Để tính toán dãy bí danh từ một số. Chúng ta cần tính các ước số thích hợp của số hạng. Để tính toán điều này, chúng tôi sẽ sử dụng thuật toán chia.

Thuật toán

Step 1: Initialise the number.
Step 2 : Find all the proper divisors of the number.
Step 3 : Calculate the sum of all proper divisors.
Step 4 : Print the sum and go to step one and initialise number with this sum.

Ví dụ

#include <bits/stdc++.h>
using namespace 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{
            sum = sum + i;
            sum = sum + (n / i);
         }
      }
   }
   return sum - n;
}
void Aliquotsequence(int n){
   printf("%d ", n);
   unordered_set<int> s;
   s.insert(n);
   int next = 0;
   while (n > 0){
      n = Sumfactorial(n);
      if (s.find(n) != s.end()){
         cout << "\nRepeats with " << n;
         break;
      }
      cout << n << " ";
      s.insert(n);
   }
}
int main(){
   Aliquotsequence(45);
   return 0;
}

Đầu ra

45 33 15 9 4 3 1 0