【发布时间】:2014-03-28 09:44:44
【问题描述】:
我有一个程序,假设在斐波那契数列中找到 1 到 75 之间所有可被 3 整除的数字的总和,并将它们加在一起。我让程序正常工作,我遇到的唯一问题是能够显示这么大的数字。有人告诉我答案应该是 15 位数字。我尝试过 long long、long double、unsigned long long int,但这些都没有产生正确的输出(它们产生负数)。
代码:
long fibNum(int kth, int nth);
int main()
{
int kTerm;
int nTerm;
kTerm = 76;
nTerm = 3;
std::cout << fibNum(kTerm, nTerm) << std::endl;
system("pause");
return 0;
}
long fibNum(int kth, int nth)
{
int term[100];
long firstTerm;
long secondTerm;
long exactValue;
int i;
term[1] = 1;
term[2] = 1;
exactValue = 0;
do
{
firstTerm = term[nth - 1];
secondTerm = term[nth - 2];
term[nth] = (firstTerm + secondTerm);
nth++;
}
while(nth < kth);
for(i = 1; i < kth; i++)
{
if(term[i] % 3 == 0)
{
term[i] = term[i];
}
else
term[i] = 0;
exactValue = term[i] + exactValue;
}
return exactValue;
我发现问题与数组有关。该数组不能存储第 47 项,即 10 位数。现在我不知道该怎么办了
【问题讨论】:
-
如果没有按原样编译的东西很难说,但是looks like a 15-digit number to me。
-
@chris:哎呀!我读的是阶乘,而不是斐波那契。
-
附带说明,我不知道为什么除了
secondTerm之外的所有内容都是long long。 -
您没有包含任何试图“显示”或“输出”任何内容的代码,这是您提出的问题(“输出 15 位数字”和“如果我不能显示整个数字如何以科学计数法显示?”)。如果您没有向我们展示您是如何尝试显示或输出它的,那么很难说它为什么不起作用。