整数除法的余数是多少?

问题描述 投票:0回答:6

我的任务是将两个变量除以整数除以余数。 问题是,我不知道什么是“余数”,现在我做了类似的事情,这是我通过互联网搜索找到的:

int a;
int b;
int remainder = Math.pow(a, 2) % b;

System.out.println("a^2 / b = " + Math.pow(a, 2) / b);
System.out.println("remainder = " + remainder);

例如,如果我设置 a = 43 和 b = 67,我会得到以下结果:

a^2 / b = 27
remainder = 40

现在,由于我不知道剩下的是什么(这只是互联网上的建议),我不知道这是否是正确的答案。

我正在搜索这个主题,但我仍然不明白,如果有人可以详细说明,我将非常感激。

math integer-division remainder
6个回答
26
投票

如果您正在寻找可以使用的数学模运算

int x = -22;
int y = 24;
System.out.println(Math.floorMod(x, y));

如果您对数学模数(仅余数)不感兴趣,那么您可以使用

int x = -22;
int y = 24;
System.out.println(x%y);

8
投票
    public static void main(String[] args) {
        int dividend = 139, divisor = 7;

        int quotient = dividend / divisor;
        int remainder = dividend % divisor;

        System.out.println("The Quotient is = " + quotient);
        System.out.println("The Remainder is = " + remainder);
    }

输出:

商 = 19

余数 = 6


2
投票

是的,

%
运算符将返回整数除法的余数。

要了解有关整数除法余数的更多信息,请查看维基百科

如果a和d是整数,且d非零,则可以证明存在唯一整数q和r,使得a = qd + r且0 ≤ r < |d|. The number q is called the quotient, while r is called the remainder.


1
投票

int remainder = a % b;
会给你排序。余数运算符返回除法的余数。


请注意,余数运算符也称为模运算符。然而,这对于 Java 来说是不正确的,因为如果左操作数

a
为负数,Java 将返回负值。


0
投票

%
运算符将返回整数除法的余数。

模块实际上在幕后做什么?

模块倾向于从数字中删除

cycles
,直到它达到一个小于循环数的正数,我们称之为模
OR
,负数我们称之为
reminder

但是,使用

%
运算符非常耗时。

为了避免使用

%
同时获得相同的结果,我们可以使用以下内容:

  • While(a >= n) a -= n;
    (当
    a
    为正数时)
  • While(a < 0) a += n;
    (当
    a
    为负数时)

  • a = n*q + r
    表示
    r = a - n*q
    q is the integer division of a/n
    表示
    a%n == a - n * Math.toIntExact(a/n)
    a
    是正数时就足够了。

  • 虽然
    a
    是负数,但我们可以使用
    (a%n + n) % n
    这将为您提供模块。

时钟案例场景:

如果现在是 9 点,4 小时后是几点

=>
9+4 = 13 小时
=>
13%12=1
while 12 is the cycle number in the clock

如果我们需要计算从现在开始

24
小时(昨天)之前的时间,即
9 O'clock
,那么:
24(2*12)
=>
昨天意味着
9-24 = -15h
虽然正确答案是
9
,但为了解决这个问题,我们将使用
(a%n + n) % n
a%n == (a - n * Math.toIntExact(a/n))
然后
-15 - 12 * Math.toIntExact(-15/12) = -3
=>
-3 + 12 = 9
=>
9%12
=>
9 - 12 * Math.toIntExact(9/12) = 9
这是正确答案。

这是时钟场景的代码:

public static void main(String args[]){
    Scanner scanner = new Scanner(System.in);
    int a = scanner.nextInt(); // a = -15
    int n = scanner.nextInt(); // cycle = 12

    int reminder = a - (n * Math.toIntExact(a / n));
    int reminder_plus_n = (reminder + n);
    int modulo = reminder_plus_n - (n * Math.toIntExact(reminder_plus_n / n));
    System.out.println(modulo); // Answer = 9
} 

0
投票

您可以将商与余数一起使用来计算计数和余数。

这是我为 Minecraft 插件编写的一些代码。

public class Division {
    public static ModuloDivResult divideMod(double a, double b) {
        double remainder = a % b;
        return new ModuloDivResult((a / b) - (remainder / b), remainder);
    }
}

我们还需要一个用于存储这两个值的容器。

public class ModuloDivResult {
    private double remainder;
    private double count;

    public ModuloDivResult(double count, double remainder) {
        this.remainder = remainder;
        this.count = count;
    }

    public double getRemainder() {
        return remainder;
    }

    public double getCount() {
        return count;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.