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

암스트롱 숫자를 위한 C 프로그램

<시간/>

암스트롱이든 아니든 사용자가 입력한 숫자 n을 확인해야 하는 작업이 주어졌습니다.

암스트롱 수는 모든 자릿수의 합이 자릿수 또는 자릿수 n과 같을 때의 자릿수입니다.

암스트롱 번호를 찾는 방법은 다음과 같습니다.

암스트롱 숫자를 위한 C 프로그램

공식 -

wxyz…. = pow(w, n) +pow(x, n) + pow(y, n) + pow(z, n) + …..

알고리즘

START
Step 1-> Declare a function to find the value after power operation on the number
   int power(int a, int b)
      Loop while b>0
         Assign power =power * a
         Decrement b by 1
      End loop
      Return power
End
Step 2-> Declare a function to count the order of a number
   int count(int n)
      Declare and set i as 0
      Loop while n!=0
         Increment i by 1
         Divide n/10 and store back in n
      End loop
   Return i
End
Step 3-> Declare a function to check number is prime or not
   int armstrong(int n)
      Declare x and call function count(n) and assign the result to x
      Declare rem = 0 and m=0 set with zero
      Loop While n
         Set rem = n %10
         Set m = m + power(rem, x)
         Set n as n/ 10
      End Loop
   Return m;
End
Step 4-> Declare main
   int main(int argc, char const *argv[])
      Declare and set n = 1634
      Call function Armstrong and check if the value is equal
         Print “it is armstrong number
      End if
      Else
         Print number isn't an armstrong number
   End
STOP

예시

#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 armstrong(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 == armstrong(n)){
      printf("%d is an armstrong number \n",n);
   }
   else
      printf("%d isn't an armstrong number \n",n);
   return 0;
}

출력

1634 is an armstrong number