c++编写程序求20的阶乘
时间: 2023-05-26 19:02:46 浏览: 135
下面是C语言程序求20的阶乘:
```
#include <stdio.h>
int main()
{
int n = 20; // 需要求阶乘的数
long long fact = 1;
int i;
for (i = 1; i <= n; i++) {
fact *= i;
}
printf("%d! = %lld\n", n, fact);
return 0;
}
```
程序中使用了一个for循环计算20的阶乘,最后输出结果。注意要使用long long类型来存储结果,因为20的阶乘很大。
相关问题
用c++编写一个求阶乘的代码
好的,以下是用 C 语言编写的求阶乘的代码:
```c
#include <stdio.h>
int main() {
int n, i, fact = 1;
printf("请输入一个正整数:");
scanf("%d", &n);
for(i = 1; i <= n; i++) {
fact *= i;
}
printf("%d 的阶乘为 %d\n", n, fact);
return 0;
}
```
在程序运行时,会提示用户输入一个正整数,然后使用 `for` 循环计算该数的阶乘,并输出结果。
用c++编写1977的阶乘
计算1977的阶乘是一个非常大的数值,远远超出了标准整数类型的范围。因此,在C++中直接使用基本数据类型如 `int` 或者 `long long` 来存储结果是不可能的。我们可以采用字符串或者其他大数处理库(例如 GMP 库)来进行运算。
下面提供一种简单的基于数组的大数阶乘算法示例:
```cpp
#include <iostream>
using namespace std;
// 计算n!的结果,并将结果存入res[] 数组中
void multiply(int number, int* res, int& res_size) {
int carry = 0;
for (int i=0; i<res_size; ++i){
// 每次相乘之后得到新的值以及进位信息
int product = res[i] * number + carry;
// 更新当前位和carry值
res[i] = product % 10;
carry = product / 10;
}
while(carry){
res[res_size++] = carry%10;
carry /= 10;
}
}
string factorial(int n){
const int MAX_SIZE = 5000; // 根据需要调整大小
int result[MAX_SIZE];
result[0]=1;
int size_of_result=1;
for(int x=2;x<=n;++x)
multiply(x,result,size_of_result);
string sResult(size_of_result,' ');
for(int i=size_of_result-1,j=0;i>=0;--i,++j){
char c='0'+result[i];
sResult[j]=c;
}
return sResult;
}
int main(){
cout << "Factorial of 1977 is:\n" ;
cout<<factorial(1977)<<endl;
}
```
这个程序会输出1977的阶乘结果。不过需要注意的是由于数字巨大所以运行时间可能会比较长。
另外也可以考虑使用第三方数学库来简化此过程并提高效率。比如GMP库就是一个很好的选择,它提供了高效而准确地进行任意精度算术的能力。
对于这么大规模的数据量,还有一种更为简便的方式就是利用Python等支持内置高精度计算的语言来做这件事儿;如果一定要用 C++, 那么建议引入像 GMP 这样的专业级工具包。
阅读全文
相关推荐













