java - 计算一个数的最大余数

标签 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
        {
            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));

最佳答案

最大余数应该小于输入数字的一半。 因此,您应该使用以下公式,其中 c 是输入整数:

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

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

关于java - 计算一个数的最大余数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14013318/

相关文章:

algorithm - 计算线性序列模 n 的总和

c++ - 如何在 C++ 中计算 A、B、C <= 10^18 的 (A*B)%C?

java - 表单布局调用 JColorChooser

java - Graphviz语言从jsp View 动态

ruby-on-rails - Rails 2.3 + Ruby 1.9.3 启动速度仍然很慢

performance - Jetty WebSocket 性能

java - 对一个实体使用两个实体管理器

java - jni xlib 窗口句柄

c++ - "std::string + char"表达式是否创建另一个 std::string?

java - 我是否忘记了关于模数运算符的一些非常基本的内容?