3

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

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

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

3 回答 3

7

您可以%用来计算余数。

int denom = 2 * n;
int numer = 30 - n * (n - 1);

if (denom) {
    if (numer % denom == 0) {
        then good to go
    }
} else {
    /*...denominator is 0! */
}
于 2013-08-21T08:21:46.227 回答
2

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

于 2013-08-21T08:21:59.147 回答
1

如果modf返回0.0,则调用它的浮点数是一个整数。这是测试浮点数是否为整数的标准方法;它适用于所有 浮点值,即使是那些会溢出int.

于 2013-08-21T09:01:58.750 回答