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

C Chương trình kiểm tra Cộng số Hoàn hảo

Cho một số x với n số chữ số, nhiệm vụ của chúng ta là kiểm tra xem số đó có phải là số Cộng hoàn hảo của số đó hay không. Để kiểm tra số đó có phải là Cộng số hoàn hảo hay không, ta tìm lũy thừa thứ n của mọi chữ số d (d ^ n) rồi tính tổng tất cả các chữ số, nếu tổng bằng n thì số đó là Cộng số hoàn hảo. Cộng với số Hoàn hảo tương tự như tìm Armstrong của bất kỳ số nào.

Giống như Trong ví dụ cụ thể bên dưới -

C Chương trình kiểm tra Cộng số Hoàn hảo

Ví dụ

Input: 163
Output: Number is not a perfect_number
Explanation: 1^3 + 6^3 + 3^3 is not equal to 163
Input: 371
Output: Number is a perfect_number
Explanation: 3^3 + 7^3 +1^3 is equal to 371

Phương pháp được sử dụng bên dưới như sau -

  • Bước đầu tiên là đếm số chữ số trong dữ liệu đầu vào đã cho.
  • Bước thứ hai là cấp nguồn cho một chữ số cùng số lần với số chữ số của đầu vào.
  • Bước thứ ba là cộng tất cả các số và kiểm tra xem nó có bằng nhau hay không.

Thuật toán

Start
In function int power(int a, int b)
   Step 1-> Declare and initialize power as 1
   Step 2-> Loop While b>0
      Set power = power * a
      Decrement b by 1
   Step 3-> return power
End function power
In function int count(int n)
   Step 1-> Declare and Initialize i as 0
   Step 2-> Loop While n!=0
      Increment i by 1
      Set n = n/10
   End Loop
   Step 3-> Return i
In function int perfect_number(int n)
   Step 1-> Declare and initialize x as count(n)
   Step 2-> Declare and initialize rem as 0 and m as 0
   Step 3-> Loop While(n)
      Set rem as n %10
      Set m as m + power(rem, x)
      Set n as n/ 10
   End Loop
   Step 4-> Return m
End Function perfect_number
In Function int main(int argc, char const *argv[])
   Step 1-> Initialize n as 1634
   Step 2-> If n == perfect_number(n) then,
      Print "Number is a perfect_number "
   Step 3-> else
      Print "Number is not a perfect_number "
   End if
End main
Stop

Ví dụ

#include <stdio.h>
int power(int a, int b) {
   int power =1;
   while(b>0) {
      power *= a;
      b--;
   }
   return power;
}
int count(int n) {
   int i=0;
   while(n!=0) {
      i++;
      n = n/10;
   }
   return i;
}
int perfect_number(int n) {
   int x = count(n);
   int rem = 0, m=0;
   while(n) {
      rem = n %10;
      m += power(rem, x);
      n /= 10;
   }
   return m;
}
int main(int argc, char const *argv[]) {
   int n = 1634;
   if(n == perfect_number(n)) {
      printf("Number is a perfect_number\n");
   }
   else
   printf("Number is not a perfect_number\n");
   return 0;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Number is a perfect_number