如何检查整数是否匹配给定的表达式" 5 + 4n"?

时间:2016-03-09 11:00:21

标签: java

确定给定整数是否与表达式5+4n的结果匹配的有效方法是什么。说,我有一个数字54,我想检查上面给出的表达式是否可以产生这个数字。我能想到的一种方法是评估5+4n最多54并检查结果是否与感兴趣的数量相匹配。但是当我不得不检查大数字时,这将是一种低效的方式。

2 个答案:

答案 0 :(得分:1)

如果我们假设x总是大于或等于0,x=5+4n可以重写为x=1+4(n+1)。 这意味着当x除以4时,余数为1.所以你可以简单地执行以下操作:

private boolean doesMatch(x number) {
    return x%4==1;
}

答案 1 :(得分:0)

如果要评估表达式A + Bn,A和B可配置,则应首先提取A和B:

Pattern p = Pattern.compile("(\\-?\\d+)\\s*\\+([\\-\\+]?\\d+)\\s*n");
Matcher m = p.matcher(expression);
if (m.matches()) {
   int A = Integer.valueOf(m.group(1));
   int B = Integer.valueOf(m.group(2));

   // Evaluate expression
   ...
}

然后只需检查x是否为解决方案:

// Evaluate expression
if ((x-A) % B == 0) {
    // Number is a solution 
} else {
    // Number is not a solution for the expression
}