如何确定整数表达式的结果是否为整数

How to decide whether the result of an integer expression is an integer

本文关键字:整数 结果是 是否 结果 何确定 表达式      更新时间:2023-10-16

我有一个类似于(30 - n(n - 1)) / 2nn表达式。我想搜索可能的n,只有当结果是整数时,这才是我的答案。有没有办法决定这个表达式的结果是否是整数。

我能想到的唯一方法是(在伪代码中):

for float n <- 1 to 100
  do float result = expression(n);
     int part = (int) result;
     if ( result - part < EPS )
       then good to go

您可以使用%来计算余数。

int denom = 2 * n;
int numer = 30 - n * (n - 1);
if (denom) {
    if (numer % denom == 0) {
        then good to go
    }
} else {
    /*...denominator is 0! */
}

if (30 - n(n - 1)) mod 2n equals to zero

如果modf返回0.0,则调用它的浮点数on是一个整数。这是测试是否浮点数是一个整数;它适用于所有浮点值,甚至那些会溢出int的值。