Java 计算一个数的最大余数

Java 计算一个数的最大余数,java,performance,modulo,Java,Performance,Modulo,我试图计算一个数的最大余数,并找出哪个数除以原始数得到最大余数。这是我目前的代码,我很确定它是有效的。我只是想快点。有什么建议吗 int c=Integer.parseInt(br.readLine()); if(c==2) pw.println(2); else if(c%2==0) { pw.println(c-1); } else

我试图计算一个数的最大余数,并找出哪个数除以原始数得到最大余数。这是我目前的代码,我很确定它是有效的。我只是想快点。有什么建议吗

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是输入整数:

int largestRemainder = c % ((c/2) + 1);
对于偶数,例如c=24,它给出最大余数=11 对于奇数,例如c=33,它给出最大余数=16
这些结果实际上是正确的。

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

int largestRemainder = c % ((c/2) + 1);
对于偶数,例如c=24,它给出最大余数=11 对于奇数,例如c=33,它给出最大余数=16
这些结果实际上是正确的。

对于所有的c>0,c%c+1==c,如果我不理解这个问题,或者问题中的代码不正确,你就不能比它大。考虑8的情况。代码返回7,其中只有余数1。@PatriciaShanahan是的,目标是打印出产生最大余数的最大数字,这就是所有c>0,c%c+1==c的结果,如果我不理解这个问题,或者问题中的代码不正确,则不能再大。考虑8的情况。代码返回7,其中只有余数1。@PatriciaShanahan是的,目标是打印出产生最大余数的最大数字,这就是素数的作用。然而,最大余数本身就是。@fge我想你还没有完全理解OP的问题。请再读一遍。然而,对于素数,最大余数就是它本身。@fge我想你还没有完全理解OP的问题。请再读一遍。