小编tig*_*ger的帖子

在n> 47之后,为什么我的计算woodall数字的程序会产生错误的结果?

对于此函数,计算最多的woodall数 n = 64

并且该算法用于伍德尔为W ñ = N⋅2 Ñ - 1

for (int n = 1; n <= 64; ++n)
{
    a[n - 1] = (n * (exp2(n))) - 1;
}
Run Code Online (Sandbox Code Playgroud)

但是在n大于47之后,结果是错误的,因为它似乎忘记- 1了结果n * (exp2(n)).

如果我cout是值via,那么输出是什么

std::cout << i << ":\t" << std::setprecision(32) << a[i - 1] << std::endl;

......之前是正确的

n
45:     1583296743997439
46:     3236962232172543
47:     6614661952700415
48:     13510798882111488
49:     27584547717644288
50:     56294995342131200
Run Code Online (Sandbox Code Playgroud)

......之后是不正确的

for a[]是一个unsigned long int

如果我将- 1 …

c++ math icc

2
推荐指数
1
解决办法
90
查看次数

标签 统计

c++ ×1

icc ×1

math ×1