最近,我在大学里参加了一次计算机考试,之前我们从未听说过模量函数或任何其他奇/偶函数检查,除先前的讲义外,我们无权访问外部文档。没有这些,有可能这样做吗?如何做?

最佳答案

我认为这仅适用于integer数字,因为对于浮点值,我不知道奇/偶的概念。

对于这些integer数字,由Rotem提出的最低有效位(LSB)校验是最直接的方法,但是还有许多其他方法可以实现这一目的。

例如,您可以使用整数除法运算作为测试。这是实际上在每个平台中都实现的最基本的操作之一。整数除法的结果始终是另一个integer。例如:

>> x = int64( 13 ) ;
>> x / 2
ans =
                    7


在这里,我将值13强制转换为int64,以确保MATLAB将数字视为integer而不是double数据类型。
同样,这里的结果实际上是四舍五入到下一个整数值。这是MATLAB特定的实现,其他平台可能会四舍五入,但这对我们来说并不重要,因为我们寻找的唯一行为是四舍五入,无论它采用哪种方式。舍入允许我们定义以下行为:


如果一个数字是偶数:将其除以2将产生精确的结果,因此,如果将这个结果乘以2,我们将获得原始数字。
如果数字是奇数:将其除以2将得出舍入的结果,因此将其乘以2将产生与原始输入不同的数字。


现在您已经弄清楚了逻辑,代码非常简单:

%% sample input
x = int64(42) ;
y = int64(43) ;

%% define the checking function
%   uses only multiplication and division operator, no high level function
is_even = @(x) int64(x) == (int64(x)/2)*2 ;


显然,这将产生:

>> is_even(x)
ans =
     1
>> is_even(y)
ans =
     0

关于testing - 在没有模数或偶/奇函数的情况下,如何检查奇数或偶数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58642829/

10-12 17:27