From: Judi Roy / Camile Hamel Date: 2000-07-06T10:04:34-04:00 Subject: [ruby-talk:03871] Re: modulo and remainder ----- Original Message ----- From: "Yukihiro Matsumoto" To: "ruby-talk ML" Sent: Monday, July 03, 2000 10:44 PM Subject: [ruby-talk:03787] Re: modulo and remainder > Hi, > > In message "[ruby-talk:03779] Re: modulo and remainder" > on 00/07/04, Tadayoshi Funaba writes: > > |I wrote a method jd_to_wday in date2.rb like this: > | > | def jd_to_wday(jd) (jd + 1) % 7 end > | > |It calculates the day of week of the given the Julian day number. > |I used % and it must be modulo. So it works even if jd is -ve. > > > It reflects the author's weakpoint. Even if you don't need that > (weakness in mathematical field?), I can't do the right thing without > YOUR help. Enlighten me, please. > > matz. Hi, I'm very much a newbie programmer and don't pretend to be able to follow most of the postings. Am I right in assuming matz is looking for mathematical info on 'modulo' and 'remainder' ,if so, I offer the following excerpt from page 123 of the book "Mathematics From the Birth of Numbers" by Jan Gullberg published by W. W. Norton & Company: "Modular Arithmetic Calculations with remainders, or residues, is convenient for handling large numbers. This arithmetic, formalized by Carl Friedrich Gauss, is called modular arithmetic or arithmetic of residue classes. We say "a is congruent to b, modulo c", and write a # b, mod c (note '#' should be three parallel lines, I did not know how to do so properly) when b - a is a multiple of c. (note: it appears this should be a - b, I did not want to change the quoted material) For instance, 10 # 1, mod 9; 100 # 10, mod 9; 1000 # 1, mod 9; ..., (see note above re '#') 10 # 2, mod 8; 100 # 4, mod 8; 1000 # 0, mod 8; ..., because 10 - 1; 100 - 10; 1000 - 1 and 10 - 2; 100 - 4; 1000 - 0 are all multiples of respectively, 9 and 8. The following calcualtion rules hold: If a1 # b1, mod c; a2 # b2, mod c, (see note above re '#') then a1 + a2 # b1 + b2, mod c a1 - a2 # b1 - b2, mod c a1 x a2 # b1 x b2, mod c. (note: x refers to times and/or multiplication) Find the least integer remainder of (12345 x 123456 x 1234567) / 11. Instead of multiplying out the product, replace each factor by its remainder when divided by 11. We have, modulo 11, 12345 # 3; 123456 # 3; 1234567 # 4, (see note above re '#') and find 12345 x 123456 x 1234567 # 3 x 3 x 4 # 36 # 3, mod 11. The sought remainder is 3." I apologize if my posting is out of line and/or inappropriate. I am certainly unable to judge any programming language, Ruby or otherwise, but the people posting to this group are very impressive both as to their community spirit and their programming knowledge. Regards, Cam