检查一个数字是否为偶数,最混乱、最低效、最难以理解的方法是什么?



我最近看到一些相当糟糕的尝试,试图检测一个数字是否是偶数,这让我想知道,这到底能有多糟糕?最糟糕的实现/算法是什么(在这种情况下有最糟糕的事情吗?)

对于有数值分析背景的程序员来说,最明显的是

bool is_even(unsigned n) {
    int sum = 0;
    int addend = 1;
    while (n > 0) {
        sum += addend;
        addend = -addend;
        n -= 1;
    }
    return sum == 0;
}

将一个交变谐波级数(如BigFraction s)相加,并与ln 2进行比较,可以使其充分恶化。为了保证鲁棒性,比较阶段需要一些巧妙的数学运算。事实上,任何收敛的交替级数都可以。

一个更需要计算的方法是计算黎曼ζ。对于n,我们知道它应该是多少。好运。

我相信甚至有更好的更差的解决方案。

欢呼。

最差的实现?

  • 将存在的每个数字写入2个平面文件(当然,使用最重的XML) -一个文件有奇数,另一个文件有偶数。
  • 使用一些自产的半加密加密来加密文件,这种加密既弱又慢。
  • 将文件定位到与逻辑运行位置不同的服务器上。
  • 在运行时

:

  • 通过网络拉取偶数文件
  • 解密它。
  • 将even文件加载到内存中。
  • 对每个数字执行for-each循环,看看它是否与输入的数字匹配。
  • 如果有,请记录下来。
  • 继续迭代到每个存在的偶数的末尾-以防万一。
  • 从内存中清除偶数数据-如果源文件被更新为不同的偶数,您不想再次使用它。

可选:对奇数执行相同的处理,只是为了确保它不是偶数和奇数。

如果方法有效,返回true/false;对于所有其他情况,包括错误,只返回null,并确保不记录任何错误数据,等等。

假设——你只关心整数,不关心小数、浮点数、双精度等。

最新更新