Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค่าสูงสุดของจำนวนเต็มที่สามารถคำนวณแฟคทอเรียลบนเครื่องใน C++


ในปัญหานี้ เราจำเป็นต้องสร้างโปรแกรมเพื่อค้นหาค่าสูงสุดของจำนวนเต็มที่สามารถคำนวณแฟคทอเรียลบนเครื่องในภาษา C++

แฟกทอเรียลของตัวเลขมีค่ามาก เนื่องจากเป็นผลคูณของค่าทั้งหมดที่อยู่ข้างหน้า และ C ++ สามารถจัดการค่าขนาดใหญ่ได้ไม่เกินค่าที่กำหนดโดยใช้ฟังก์ชัน inbuilt เราต้องหาข้อจำกัดนี้ให้ได้

แนวทางการแก้ปัญหา

เราจะใช้คุณสมบัติของประเภทข้อมูลอย่างง่าย ๆ ซึ่งก็คือเมื่อตัวเลขเกินค่าสูงสุดจะส่งกลับจำนวนลบ

เราจะใช้ 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