确定b是否是a的因子的有效方法?

时间:2014-07-20 05:16:09

标签: java factorization

这是我正在制作的计算器程序的一部分,这部分确定b是否是a的因子。我也是Java新手,这让我第三天学习它的语法。无论如何,我想知道哪种方式更有效地确定b是否是a的因子。是我们的模数运算符(%)还是我的第二种方法???

如果我提出的方法比我提出的两种方法更有效,请显示。

// for now I want the result to print out in the console
public class factornot {
    public static void main(String args[]) {
        int a = 56, b = 3; // just for testing purposes!
        if((a != 0) && (a % b) == 0) System.out.println(b + " is a factor of " + a); 
        else System.out.println(b + " is not a factor of " + a);
        // short-circuit and prevents a divide by zero error!


        // is this better or worse, faster or slower ???

        int d = (a / b), e = (d * b); 
        if((a - e) == 0) System.out.println(b + " is a factor of " + a); 
        else System.out.println(b + " is not a factor of " + a);        
        }
   }

2 个答案:

答案 0 :(得分:1)

就基本计算而言,可能存在很大差异。为了确定a == 0 mod b,必须执行除法,并通过减法计算余数。

然而,运营商%为编译器提供了完成所有操作的机会,并且不需要存储和提取(可能被优化为任何可以短路的)第二个版本。

此外:代码越少,出错的可能性就越小。直接的方式提供了良好的可读性。

答案 1 :(得分:0)

你写的第一种方法有点好,但说实话,它不会在速度或效率上产生明显的差异。另外我建议不要在if语句中省略大括号并将语句放在一个新行上,你所采用的方法被认为是不好的形式,根据Oracles代码约定可能容易出错,尽管我从未见过错误的结果此

参考代码Conventions for Java