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

C++에서 주어진 범위의 계승 수 계산

<시간/>

변수가 보유하는 정수 값에서 시작하여 변수 끝까지의 범위가 주어지고 작업은 주어진 범위에서 사용할 수 있는 전체 계승 수를 계산하는 것입니다.

공장수란 무엇입니까

숫자의 계승은 숫자의 값을 1로 감소시키면서 숫자의 숫자를 곱하여 계산됩니다. 기호 '!'로 표시됩니다. 즉, 0!, 1!, 2!, 3!, 5!,... ,등. 팩토리얼 0! 그리고 1! 항상 1입니다.

I.e. factorial of 2 = 2 * (2-1) = 2 * 1 = 2
      factorial of 3 = 3 * (3-1) * (2-1) = 3 * 2 * 1 = 6

Input − start = 5, end = 600
Output − Count of factorial numbers are 3

설명 − 5-600 범위의 계승값을 갖는 3개의 숫자를 사용할 수 있기 때문입니다.

Input − start = 1, end = 100
Output − Count of factorial numbers are 5

설명 − 이후 5-600 범위의 계승값을 갖는 5개의 숫자가 있습니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 범위를 입력하고 변수 시작 및 종료에 저장

  • 다른 변수 'fact'를 가져와 계승값을 저장하고 1로 초기화하고 임시 변수 'i'로 초기화하여 숫자 개수를 늘립니다.

  • 루프를 시작하고 팩트가 시작보다 작은 동안 팩트에 i를 계속 곱하여 계승을 계산하고 i의 값을 계속 증가시킵니다.

  • 다른 루프를 시작하는 동안 사실은 종료 변수보다 작으며 변수 r의 값을 계속 증가시키고 사실을 팩트 *i로 계속 설정하고 i

    의 값을 계속 증가시킵니다.
  • 이제 전체 계승 수의 총 개수를 보유하는 r의 값을 반환합니다.

  • 결과를 인쇄하십시오.

예시

#include <iostream>
using namespace std;
// To count the number of factorials
int factorials(int start, int end){
   // Starting from 1 and find the first factorial number
   // 'fact' greater than or equal to 'start'
   int fact = 1, i = 1;
   while (fact < start){
      fact = fact*i;
      i++;
   }
   // r to count factorial numbers in range start to end
   int r = 0;
   while (fact <= end){
      r++;
      fact = fact*i;
      i++;
   }
   // Return the count of factorials in range
   return r;
}
int main(){
   int start = 5, end = 600;
   cout << "Count of factorial numbers are " << factorials(start, end);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of factorial numbers are 3