|
发表于 2006-8-18 16:29:00
|
显示全部楼层
[bug]发现一个BUG,不知道是翻译出错,还是原著有错
在第26章--数组的部分--埃拉托色尼素数筛子的代码中
- 64 let i=$LOWER_LIMIT+1
- 65 # 我们都知道 1 是素数, 所以我们从 2 开始.
- 66
- 67 until [ "$i" -gt "$UPPER_LIMIT" ]
- 68 do
- 69
- 70 if [ "${Primes[i]}" -eq "$PRIME" ]
- 71 # 不要处理已经过滤过的数字 (被标识为非素数).
- 72 then
- 73
- 74 t=$i
- 75
- 76 while [ "$t" -le "$UPPER_LIMIT" ]
- 77 do
- 78 let "t += $i "
- 79 Primes[t]=$NON_PRIME
- 80 # 标识为非素数.
- 81 done
复制代码
第64跟65行有问题,首先1不是素数,而且,如果这个算法从1开始算起,肯定没有答案。从2开始肯定不是注解上的原因
还有SPLIT的这个变量没有用过,应该再用在第70行,把那个$UPPER_LIMIT,改成$SPLIT
目前看的最大的BUG,其他的翻译一些错误可能是打字时出错,但是无关痛痒,都看得懂
但是这个BUG是有误导的意思
不知道写的对不对,但是希望有人能看到 |
|