我正在製作一個打印前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