c++的大数阶乘算法
2022/1/6 17:04:16
本文主要是介绍c++的大数阶乘算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include<iostream> using namespace std; #include<string> const int MAX = 3000; int a[MAX]; int fac(int n) { memset(a, 0, sizeof(a));//初始化0;下面的a[j] = a[j] * i + c计算过程中会用到a[j]=0 int top = 0;//最高位 a[0] = 1; int c = 0;//用于判断是否进位,也就是j是否+1。 for (int i = 2; i <= n; i++) {//i为用来阶乘的数字,就是2~n之间的数字 for (int j = 0; j <= top; j++) { //j循环用来将计算出来的结果按位分割并存储到数组中 a[j] = a[j] * i + c; c = a[j] / 10;//c就是下一次再次进入j循环时的a[j]初始值,结合下面的判断语句 //如果这里的c<10,top最高位就没必要再加了,如果c>10,则继续分割,知道c<10为止 if (j == top && c >= 1) { top++; } a[j] = a[j] % 10;//取余得到第j位上该放置的数字 } } for (int i = top; i >= 0; --i) { cout << a[i]; } return 0; } int main() { int n; cout << "请输入一个数字n" << endl; cin >> n; fac(n); }
这篇关于c++的大数阶乘算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享