我如何在变量(i)中存储大量数字并且不需要更改程序的大部分内容?
例如,是否有可用的数据类型来存储 100 的阶乘?
#include<stdio.h>
#include<conio.h>
void main()
{
long long int i = 1;
long long int sum = 0;
long long int j = 0;
long long int digit = 0;
for(j = 500; j >= 1; j--)
{
i = i * j;
}
printf("%lld", i);
while(i > 0)
{
digit = i%10;
i = i/10;
sum = sum + digit;
}
printf("\n%lld", sum);
getch();
}
对于如此大的数字没有内置语言支持。您有两个选择:
- 如果可以的话,使用现有的库,例如GMP http://gmplib.org/
- 实施您自己的解决方案
如果您决定采用第二条路径,您可能需要考虑将数字(不一定是十进制)存储在数组中,并使用众所周知的学校算法执行算术运算。请记住,它的效率(可能相当低)低于经过深度优化的库代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)