微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 C++ 中找到 100 的阶乘?

如何解决如何在 C++ 中找到 100 的阶乘?

我正在编写一个程序来计算 100 的阶乘。代码如下。尽管如此,由于答案太大,输出为 0。是否有任何答案可以显示确切答案?这是因为即使是 unsigned long long 也无法显示 100 的阶乘。谢谢。

#include <iostream> 
using namespace std; 
int main() 
{
    int n,i,fact=1; 
    cout << "enter the number "<<endl; 
    cin>>n; 
    for(i=1;i<=n;i++) 
    { 
       fact=fact*i; 
    } 
    cout<<"the factorial is "<<fact<<endl; 
} 

解决方法

这是一个相当简单的任务。我们可以像在一张纸上那样做。我们使用 rect 的数字来保存数字。因为结果对于 22! 的 std::vector 来说已经太大了。

答案将是准确的。

采用这种方法,计算很简单。我什至不知道要进一步解释什么。

请看代码:

unsigned long long

使用 Microsoft Visual Studio Community 2019 版本 16.8.2 进行开发和测试。

另外用clang11.0和gcc10.2编译和测试

语言:C++17

,

您可以使用 C++ Boost 库来处理如此大的数字。

代码如下:

    #include <bits/stdc++.h>
    #include <boost/multiprecision/cpp_int.hpp>
    using namespace std;
    using namespace boost::multiprecision;
    cpp_int fact(int);
    int main(){
        cpp_int a=1;
        int n;
        cin>>n;
        cout<<fact(n)<<endl;
    }
    cpp_int fact(int x){
        if(x==1)
        return 1;
        cpp_int temp=1;
        temp= x*fact(x-1);
        return temp;
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。