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

C++에서 기계에서 계승을 계산할 수 있는 정수의 최대값

<시간/>

이 문제에서는 C++에서 기계에서 계승을 계산할 수 있는 정수의 최대값을 찾는 프로그램을 만들어야 합니다.

숫자의 계승은 앞에 있는 모든 값의 곱이므로 큰 값입니다. 그리고 C++는 내장 함수를 사용하여 특정 값까지만 큰 값을 처리할 수 있습니다. 이 제한 사항을 찾아야 합니다.

해결 방법

숫자가 최대값을 초과하면 음수가 반환되는 데이터 유형의 속성을 사용합니다.

가장 큰 기본 데이터 유형인 long long int를 사용합니다.

#include <iostream>
using namespace std;
int calcMaxFactVal(){
   int maxVal = 1;
   long long int maxFactorial = 1;
   while (true){
      if (maxFactorial < 0)
         return (maxVal - 1);
      maxVal++;
      maxFactorial *= maxVal;
   }
   return - 1;
}
int main(){
   cout<<"The maximum value of an integer for which factorial can be
   calculated on machine is "<<calcMaxFactVal();
   return 0;
}

출력

The maximum value of an integer for which factorial can be calculated on
machine is 20