Cả hai câu trả lời đều chính xác vì -1 modulo 10
giống với 9 modulo 10
.
r = (a mod m)
a = n*q + r
Bạn có thể chắc chắn rằng |r| < |n|
, nhưng không phải những gì giá trị của r
là. Có 2 câu trả lời, tiêu cực và tích cực.
Trong C89, mặc dù câu trả lời sẽ luôn là đúng, giá trị chính xác của một phép toán module (họ đề cập đến nó như là phần còn lại) là không xác định, có nghĩa là nó có thể là một kết quả tiêu cực hoặc một kết quả tích cực. Trong C99 kết quả được xác định.
Nếu bạn muốn câu trả lời tích cực, bạn chỉ cần thêm 10 nếu bạn thấy câu trả lời là số âm.
Để có được điều hành modulo để làm việc như nhau trên tất cả các ngôn ngữ, chỉ cần nhớ rằng:
n mod M == (n + M) mod M
và nói chung:
n mod M == (n + X * M) mod M
Nguồn
2009-12-15 13:48:05
Điều gì aout n = - 11? Tôi nghĩ rằng bạn có nghĩa là ((n% M) + M)% M – Henrik
với (-17 + 10)% 10 bạn đang ở trong cùng một vấn đề. – yeyeyerman
Rất tiếc, đã sửa. Cảm ơn. –