计算一个数字的最大余数

时间:2012-12-23 18:02:44

标签: java performance modulo

我正在尝试计算一个数字的最大余数,并找出将原始数除以得到最大余数的数字。这是我目前的代码我很确定它的工作原理。我只想让它更快。任何Sugestions?

int c=Integer.parseInt(br.readLine());

        if(c==2)
            pw.println(2);
        else if(c%2==0)
        {               
            pw.println(c-1);
        }
        else
        {
            max=0;
            int numDivided=0;
            for(int z=1; z<c; z+=2)
            {
                if(c%z>max)
                {
                    numDivided=z;
                    max=c%z;
                }
            }
            pw.println(numDivided);

新的更快的代码

c=Integer.parseInt(br.readLine());
int largestRemainder = c % ((c/2) + 1);
pw.println(((c/2) + 1));

1 个答案:

答案 0 :(得分:4)

最大余数应该小于输入数字的一半。 所以你应该使用这个公式,其中c是输入整数:

int largestRemainder = c % ((c/2) + 1);
  • 对于偶数,例如c = 24 largestRemainder = 11
  • 对于奇数,例如c = 33 largestRemainder = 16

这些结果实际上是正确的。