我正在制作一个打印前100个卢卡斯数字(它们就像斐波那契数字)的程序,但最后几个数字不符合无符号long long int。我尝试了使用long double,但这不是精确的,我得到了一些与我应该得到的结果的区别。C中的精确数字?
这是一项家庭作业任务,我的老师特别指定我们不需要使用除stdio.h以外的任何其他库。
我尝试了一种将字符串添加为数字的方法,但它超出了经验,我真诚地怀疑这是我们必须做的。
随着不精确它看起来是这样的:
#include <stdio.h>
int main()
{
long double firstNumber = 2;
long double secondNumber = 1;
long double thirdNumber;
int i;
for (i = 2; i <= 100; i += 1)
{
thirdNumber = secondNumber + firstNumber;
firstNumber = secondNumber;
secondNumber = thirdNumber;
printf("%Lf, ", thirdNumber);
}
return 0;
}
你知道数组吗?例如,您可以将单个“数字”存储为数字数组,其中每个元素包含0到9.由于操作只是添加,因此实现数组添加应该相当容易(不要忘记在添加之后进行归一化)。 – wallyk 2014-10-10 05:27:55
@WhozCraig根据WolframAlpha,64位无符号整数的最大值是'18446744073709551615',但L100是'792070839848372253127'。 http://www.wolframalpha.com/input/?i=what+is+the+100th+Lucas+number%3F – Adam 2014-10-10 05:37:19
阅读[bignums](http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic ),并参见http://gmplib.org/ – 2014-10-10 07:17:48