私はこのトピックについてあちこち探していましたが、まだわかりません。誰かが詳しく説明できるとしたら、とてもありがたいです。
私の仕事は、2つの変数を整数の除算として剰余で除算することです。問題は、剰余とは何なのか手がかりがないことです。今のところ、私はそのようなことをしました。これは、インターネットで検索して見つけたものです。
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)を設定した場合
次に、このreslutを取得します。
a^2 / b = 27
remainder = 40
残りが何なのかわからないので(これはインターネットからの提案にすぎません)、これが正しい答えかどうかわかりません。
助けてくれてありがとう、
敬具
あなたが数学的なモジュロ演算を探しているなら、あなたは使うことができます
int x = -22;
int y = 24;
System.out.println(Math.floorMod(x, y));
あなたが数学の剰余に興味がない場合(残りだけ)、あなたは使うことができます
int x = -22;
int y = 24;
System.out.println(x%y);
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
はい %
演算子は、整数の除算の残りを返します。
整数部の残りの部分について詳しく知るには、以下をチェックしてください Wikipedia :
Aとdが整数で、dがゼロ以外の場合、a = qd + rおよび0≤r <| d |のような一意の整数qとrが存在することを証明できます。数値qは商と呼ばれ、rは剰余と呼ばれます。
_%
_演算子は、整数除算の残りを返します。
実際にはどのモジュールが内部で実行していますか?
モジュールは、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 = 13h _=>
_ 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
}
_
int remainder = a % b;
で並べ替えます。剰余演算子は、除算の剰余を返します。
剰余演算子はモジュロ演算子とも呼ばれることに注意してください。ただし、Javaの場合、これは正しくありません。Javaは、左のオペランドa
が負の場合、負の値を返します。