我正在尝试计算一个数字的最大余数,并找到哪个数字除以原始数字以获得最大余数。这是我当前的代码,我很确定它可以工作。我只是想让它更快。有什么建议吗?
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/