情報数学 I
第十二回: 合同算術 (2013年
1月11日)
Martin J. Dürst
http://www.sw.it.aoyama.ac.jp/2012/Math1/lecture12.html

© 2006-12 Martin
J. Dürst 青山学院大学
今日の予定
  - これからの予定
- 前回の復習
- 合同算術
- (証明の方法)
- 授業改善のための学生アンケート
これからの予定
  - 1月17日 (木曜日2限、補講):
    13回目の授業
- 1月18日 (金): 14回目の授業
- 1月25日 (金) 11:10-12:35: 期末試験
前回の復習
  - 記号論理の種類: 命題論理、述語論理など
- 述語は命題と違って、引数を取る
- 述語では命題より一般的な記述、推論が可能
- 全称限量子 (∀) と存在限量子 (∃)
量記号の復習
量記号の場合の注意点:
  - 全集合の把握
- 書き方 (コロン、括弧など)
- 使用する述語の定義
- 自由変数の存在
量記号の性質の具体例
  - ∀x: P(x) ∧ ∀x: R(x) =
    ∀x: (P(x) ∧ R(x))
 例:
    全ての学生において、30歳以下である、かつ全ての学生において、理工学部在籍である
    =
  全ての学生において、30歳以下かつ理工学部在籍である
- ∀x: P(x) ∨ ∀x: R(x) →
    ∀x: (P(x) ∨ R(x))
 左から右への例:
    全ての学生において、30歳以上である、又は全ての学生において、理工学部在籍である
    →
    全ての学生において、30歳以上又は理工学部在籍である
 右から左への反例:
    全ての学生において、男性である又は女性である
 しかし、全ての学生が男性である、又は全ての学生が女性であるが偽
- ∃x: P(x) ∨ ∃x: R(x) =
    ∃x: (P(x) ∨ R(x))
 例:
    ある学生において、東京都出身である、又はある学生において神奈川県出身である
    =
    ある学生において、東京都出身である又は神奈川県出身である
- ∃x: P(x) ∧ ∃x: R(x) ←
    ∃x: (P(x) ∧ R(x))
 右から左への例:
    ある学生において、広島県出身であるかつ女性である
    →
    ある学生において、広島県出身である、かつある学生において、女性である
 左から右へな反例:
    ある学生において、北海道出身であるかつある学生において女性である
 ある学生において北海道出身であるかつ女性であるとは限らない
 
合同算術
(modular arithmetic)
合同関係
  - 各法 n は ℤ において合同関係を作る
- 合同関係は同値関係
- 同値類は合同類 (congruence class) 又は剰余類 (residue class)
    と呼ぶ
- 一般に合同類の代表 k は 0 ≦ k <
    n のようにとる
- 代表は剰余演算の結果 (注:
    負の数の場合に、定義による)
合同式の性質
  - a ≡ b ∧ c ≡ d ⇒
    a + c ≡ b + d (mod
    n)
- a ≡ b ∧ c ≡ d ⇒
    a - c ≡ b - d (mod
    n)
- a ≡ b ∧ c ≡ d ⇒
    ac ≡ bd (mod
  n)
- a ≡ b ⇒ am ≡
    bm (mod n)
- a ≡ b ∧ c ≡ d
    ⇏ a / c ≡ b /
    d (mod n)
Modulo Operation
  - Operator: %(C, Ruby and many other programming
    languages)、mod (Mathematics)
- a ≡(mod n) b ⇔
    a mod n = b mod n
An Example of Using the Modulo Operation
Output some data items, three items on a line.
A simple way:
int items = 0;
for (i=0; i<length; i++) {
    /* print out */
    items++;
    if (items==3) {
        printf("\n");
        items = 0;
    }
}
Using the modulo operation:
for (i=0; i<length; i++) {
    /* print out */
    if (i%3 == 2)  printf("\n");
}
Properties of the Modulo Operation
  - (a + c) mod n = (a mod
    n + c mod n) mod n
- (a - c) mod n = (a mod
    n - c mod n) mod n
- (a · c) mod n = (a mod
    n · c mod n) mod n
Reason: a ≡(mod n) a mod
n, and so on
Application of Congruence: Simple Calculation of Remainder
Example: 216 mod 29 = ?
216 = 25 · 25 · 25 ·
2
216 = 25 · 25 · 25 · 2 = 32
· 32 · 32 · 2 ≡(mod 29) 3 · 3 · 3 · 2 = 54 ≡(mod
29) 25
数字和と数字根
数字和 (digit sum): それぞれのけたの数字の合計
数字根 (digit root): 数字和を一桁になるまでに繰り返す
十進法での応用例: 1839275 の数字和は 1+8+3+9+2+7+5 = 35; 35
の数字和は 3+5 = 8; 1839275 の数字根は 8
十六進法の例: A8FB の数字和は A+8+F+B (10+8+15+11) = (44) 2C; 2C
の数字和は 2+C (2+12) = (14) E; A3FB の数字根は E
合同式の応用: 九去法
(casting out nines)
  - n 進法の数字根は n-1
    で割ったときの剰余と同じ
- 元の演算が合ったら、数字根での演算は当然合う
- 数字根での演算では演算の間違えの一部が確認可能
    (演算の正確さの確認は不可能)
- 応用例:
    次の二つの計算のうち、一つだけ正しいが、どちらでしょうか:
 2485938 · 4962483 = 12336425064054
 2354987 · 2498472 = 5883469079864
授業改善のための学生アンケート
お願い:
自由記述をできるだけ使って、具体的に書いてください
(例:
「英語をやめてほしい」のではなく、「日本語の部分で出てくる用語も
Glossary に含めてほしい」など)
Glossary
  - modulo operation
- 剰余演算
- operator
- 演算子