すのものの「いろいろ」(その177)

modulo m での“かけ算九九”の表に現れる濃淡の模様について

modulo m での“かけ算九九”の表を印字する、次のようなプログラムを考える。 (コマンドライン引数が m になる。)

#include <stdio.h>
#include <stdlib.h>

main(int argc, char* argv[]) {
    int i, j, m;

    if (argc != 2) {
        return 1;
    }
    m = atoi(argv[1]);
    for (i = 1; i < m; i++) {
        for (j = 1; j < m; j++) {
            printf(" %2d", i*j%m);
        }
        putchar('\n');
    }
}

これを、たとえば m として 24 を選んで動かすと次のようになる。

  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
  2  4  6  8 10 12 14 16 18 20 22  0  2  4  6  8 10 12 14 16 18 20 22
  3  6  9 12 15 18 21  0  3  6  9 12 15 18 21  0  3  6  9 12 15 18 21
  4  8 12 16 20  0  4  8 12 16 20  0  4  8 12 16 20  0  4  8 12 16 20
  5 10 15 20  1  6 11 16 21  2  7 12 17 22  3  8 13 18 23  4  9 14 19
  6 12 18  0  6 12 18  0  6 12 18  0  6 12 18  0  6 12 18  0  6 12 18
  7 14 21  4 11 18  1  8 15 22  5 12 19  2  9 16 23  6 13 20  3 10 17
  8 16  0  8 16  0  8 16  0  8 16  0  8 16  0  8 16  0  8 16  0  8 16
  9 18  3 12 21  6 15  0  9 18  3 12 21  6 15  0  9 18  3 12 21  6 15
 10 20  6 16  2 12 22  8 18  4 14  0 10 20  6 16  2 12 22  8 18  4 14
 11 22  9 20  7 18  5 16  3 14  1 12 23 10 21  8 19  6 17  4 15  2 13
 12  0 12  0 12  0 12  0 12  0 12  0 12  0 12  0 12  0 12  0 12  0 12
 13  2 15  4 17  6 19  8 21 10 23 12  1 14  3 16  5 18  7 20  9 22 11
 14  4 18  8 22 12  2 16  6 20 10  0 14  4 18  8 22 12  2 16  6 20 10
 15  6 21 12  3 18  9  0 15  6 21 12  3 18  9  0 15  6 21 12  3 18  9
 16  8  0 16  8  0 16  8  0 16  8  0 16  8  0 16  8  0 16  8  0 16  8
 17 10  3 20 13  6 23 16  9  2 19 12  5 22 15  8  1 18 11  4 21 14  7
 18 12  6  0 18 12  6  0 18 12  6  0 18 12  6  0 18 12  6  0 18 12  6
 19 14  9  4 23 18 13  8  3 22 17 12  7  2 21 16 11  6  1 20 15 10  5
 20 16 12  8  4  0 20 16 12  8  4  0 20 16 12  8  4  0 20 16 12  8  4
 21 18 15 12  9  6  3  0 21 18 15 12  9  6  3  0 21 18 15 12  9  6  3
 22 20 18 16 14 12 10  8  6  4  2  0 22 20 18 16 14 12 10  8  6  4  2
 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1
一ケタの数と二ケタの数とで濃淡の差があるので、 なにやら、同心円状のものが見えるであろう。 m を 48 にすると次のようになる。
  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
  2  4  6  8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46  0  2  4  6  8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46
  3  6  9 12 15 18 21 24 27 30 33 36 39 42 45  0  3  6  9 12 15 18 21 24 27 30 33 36 39 42 45  0  3  6  9 12 15 18 21 24 27 30 33 36 39 42 45
  4  8 12 16 20 24 28 32 36 40 44  0  4  8 12 16 20 24 28 32 36 40 44  0  4  8 12 16 20 24 28 32 36 40 44  0  4  8 12 16 20 24 28 32 36 40 44
  5 10 15 20 25 30 35 40 45  2  7 12 17 22 27 32 37 42 47  4  9 14 19 24 29 34 39 44  1  6 11 16 21 26 31 36 41 46  3  8 13 18 23 28 33 38 43
  6 12 18 24 30 36 42  0  6 12 18 24 30 36 42  0  6 12 18 24 30 36 42  0  6 12 18 24 30 36 42  0  6 12 18 24 30 36 42  0  6 12 18 24 30 36 42
  7 14 21 28 35 42  1  8 15 22 29 36 43  2  9 16 23 30 37 44  3 10 17 24 31 38 45  4 11 18 25 32 39 46  5 12 19 26 33 40 47  6 13 20 27 34 41
  8 16 24 32 40  0  8 16 24 32 40  0  8 16 24 32 40  0  8 16 24 32 40  0  8 16 24 32 40  0  8 16 24 32 40  0  8 16 24 32 40  0  8 16 24 32 40
  9 18 27 36 45  6 15 24 33 42  3 12 21 30 39  0  9 18 27 36 45  6 15 24 33 42  3 12 21 30 39  0  9 18 27 36 45  6 15 24 33 42  3 12 21 30 39
 10 20 30 40  2 12 22 32 42  4 14 24 34 44  6 16 26 36 46  8 18 28 38  0 10 20 30 40  2 12 22 32 42  4 14 24 34 44  6 16 26 36 46  8 18 28 38
 11 22 33 44  7 18 29 40  3 14 25 36 47 10 21 32 43  6 17 28 39  2 13 24 35 46  9 20 31 42  5 16 27 38  1 12 23 34 45  8 19 30 41  4 15 26 37
 12 24 36  0 12 24 36  0 12 24 36  0 12 24 36  0 12 24 36  0 12 24 36  0 12 24 36  0 12 24 36  0 12 24 36  0 12 24 36  0 12 24 36  0 12 24 36
 13 26 39  4 17 30 43  8 21 34 47 12 25 38  3 16 29 42  7 20 33 46 11 24 37  2 15 28 41  6 19 32 45 10 23 36  1 14 27 40  5 18 31 44  9 22 35
 14 28 42  8 22 36  2 16 30 44 10 24 38  4 18 32 46 12 26 40  6 20 34  0 14 28 42  8 22 36  2 16 30 44 10 24 38  4 18 32 46 12 26 40  6 20 34
 15 30 45 12 27 42  9 24 39  6 21 36  3 18 33  0 15 30 45 12 27 42  9 24 39  6 21 36  3 18 33  0 15 30 45 12 27 42  9 24 39  6 21 36  3 18 33
 16 32  0 16 32  0 16 32  0 16 32  0 16 32  0 16 32  0 16 32  0 16 32  0 16 32  0 16 32  0 16 32  0 16 32  0 16 32  0 16 32  0 16 32  0 16 32
 17 34  3 20 37  6 23 40  9 26 43 12 29 46 15 32  1 18 35  4 21 38  7 24 41 10 27 44 13 30 47 16 33  2 19 36  5 22 39  8 25 42 11 28 45 14 31
 18 36  6 24 42 12 30  0 18 36  6 24 42 12 30  0 18 36  6 24 42 12 30  0 18 36  6 24 42 12 30  0 18 36  6 24 42 12 30  0 18 36  6 24 42 12 30
 19 38  9 28 47 18 37  8 27 46 17 36  7 26 45 16 35  6 25 44 15 34  5 24 43 14 33  4 23 42 13 32  3 22 41 12 31  2 21 40 11 30  1 20 39 10 29
 20 40 12 32  4 24 44 16 36  8 28  0 20 40 12 32  4 24 44 16 36  8 28  0 20 40 12 32  4 24 44 16 36  8 28  0 20 40 12 32  4 24 44 16 36  8 28
 21 42 15 36  9 30  3 24 45 18 39 12 33  6 27  0 21 42 15 36  9 30  3 24 45 18 39 12 33  6 27  0 21 42 15 36  9 30  3 24 45 18 39 12 33  6 27
 22 44 18 40 14 36 10 32  6 28  2 24 46 20 42 16 38 12 34  8 30  4 26  0 22 44 18 40 14 36 10 32  6 28  2 24 46 20 42 16 38 12 34  8 30  4 26
 23 46 21 44 19 42 17 40 15 38 13 36 11 34  9 32  7 30  5 28  3 26  1 24 47 22 45 20 43 18 41 16 39 14 37 12 35 10 33  8 31  6 29  4 27  2 25
 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24  0 24
 25  2 27  4 29  6 31  8 33 10 35 12 37 14 39 16 41 18 43 20 45 22 47 24  1 26  3 28  5 30  7 32  9 34 11 36 13 38 15 40 17 42 19 44 21 46 23
 26  4 30  8 34 12 38 16 42 20 46 24  2 28  6 32 10 36 14 40 18 44 22  0 26  4 30  8 34 12 38 16 42 20 46 24  2 28  6 32 10 36 14 40 18 44 22
 27  6 33 12 39 18 45 24  3 30  9 36 15 42 21  0 27  6 33 12 39 18 45 24  3 30  9 36 15 42 21  0 27  6 33 12 39 18 45 24  3 30  9 36 15 42 21
 28  8 36 16 44 24  4 32 12 40 20  0 28  8 36 16 44 24  4 32 12 40 20  0 28  8 36 16 44 24  4 32 12 40 20  0 28  8 36 16 44 24  4 32 12 40 20
 29 10 39 20  1 30 11 40 21  2 31 12 41 22  3 32 13 42 23  4 33 14 43 24  5 34 15 44 25  6 35 16 45 26  7 36 17 46 27  8 37 18 47 28  9 38 19
 30 12 42 24  6 36 18  0 30 12 42 24  6 36 18  0 30 12 42 24  6 36 18  0 30 12 42 24  6 36 18  0 30 12 42 24  6 36 18  0 30 12 42 24  6 36 18
 31 14 45 28 11 42 25  8 39 22  5 36 19  2 33 16 47 30 13 44 27 10 41 24  7 38 21  4 35 18  1 32 15 46 29 12 43 26  9 40 23  6 37 20  3 34 17
 32 16  0 32 16  0 32 16  0 32 16  0 32 16  0 32 16  0 32 16  0 32 16  0 32 16  0 32 16  0 32 16  0 32 16  0 32 16  0 32 16  0 32 16  0 32 16
 33 18  3 36 21  6 39 24  9 42 27 12 45 30 15  0 33 18  3 36 21  6 39 24  9 42 27 12 45 30 15  0 33 18  3 36 21  6 39 24  9 42 27 12 45 30 15
 34 20  6 40 26 12 46 32 18  4 38 24 10 44 30 16  2 36 22  8 42 28 14  0 34 20  6 40 26 12 46 32 18  4 38 24 10 44 30 16  2 36 22  8 42 28 14
 35 22  9 44 31 18  5 40 27 14  1 36 23 10 45 32 19  6 41 28 15  2 37 24 11 46 33 20  7 42 29 16  3 38 25 12 47 34 21  8 43 30 17  4 39 26 13
 36 24 12  0 36 24 12  0 36 24 12  0 36 24 12  0 36 24 12  0 36 24 12  0 36 24 12  0 36 24 12  0 36 24 12  0 36 24 12  0 36 24 12  0 36 24 12
 37 26 15  4 41 30 19  8 45 34 23 12  1 38 27 16  5 42 31 20  9 46 35 24 13  2 39 28 17  6 43 32 21 10 47 36 25 14  3 40 29 18  7 44 33 22 11
 38 28 18  8 46 36 26 16  6 44 34 24 14  4 42 32 22 12  2 40 30 20 10  0 38 28 18  8 46 36 26 16  6 44 34 24 14  4 42 32 22 12  2 40 30 20 10
 39 30 21 12  3 42 33 24 15  6 45 36 27 18  9  0 39 30 21 12  3 42 33 24 15  6 45 36 27 18  9  0 39 30 21 12  3 42 33 24 15  6 45 36 27 18  9
 40 32 24 16  8  0 40 32 24 16  8  0 40 32 24 16  8  0 40 32 24 16  8  0 40 32 24 16  8  0 40 32 24 16  8  0 40 32 24 16  8  0 40 32 24 16  8
 41 34 27 20 13  6 47 40 33 26 19 12  5 46 39 32 25 18 11  4 45 38 31 24 17 10  3 44 37 30 23 16  9  2 43 36 29 22 15  8  1 42 35 28 21 14  7
 42 36 30 24 18 12  6  0 42 36 30 24 18 12  6  0 42 36 30 24 18 12  6  0 42 36 30 24 18 12  6  0 42 36 30 24 18 12  6  0 42 36 30 24 18 12  6
 43 38 33 28 23 18 13  8  3 46 41 36 31 26 21 16 11  6  1 44 39 34 29 24 19 14  9  4 47 42 37 32 27 22 17 12  7  2 45 40 35 30 25 20 15 10  5
 44 40 36 32 28 24 20 16 12  8  4  0 44 40 36 32 28 24 20 16 12  8  4  0 44 40 36 32 28 24 20 16 12  8  4  0 44 40 36 32 28 24 20 16 12  8  4
 45 42 39 36 33 30 27 24 21 18 15 12  9  6  3  0 45 42 39 36 33 30 27 24 21 18 15 12  9  6  3  0 45 42 39 36 33 30 27 24 21 18 15 12  9  6  3
 46 44 42 40 38 36 34 32 30 28 26 24 22 20 18 16 14 12 10  8  6  4  2  0 46 44 42 40 38 36 34 32 30 28 26 24 22 20 18 16 14 12 10  8  6  4  2
 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1
ボタンの花のように見えないだろうか?

m が素数かどうかはあまり関係ないようである。

2008-02-03 (0) 23:13:12 +0900

きょうの補筆箇所

2008-01-31 (4) 02:13:51 +0900

へりくだったつもりで言った「決めさせていただきます」は横柄に見えるかも

最近使われすぎとも言われる「〜させていただく」だが、 「私が決めます」をへりくだって言ったつもりの 「私が決めさせていただきます」は横柄にとられることがあるかも。

2008-01-30 (3) 21:57:55 +0900

NHKフランス語会話>一月 23 日(水曜日)放送分

前半については 《NHKフランス語会話>七月 18 日(水曜日)放送分》> も参照のこと。

スケッチの内容について。 カトリーヌにデザートを手渡すとき、 家の主人の目の前にはすでにデザートが置かれていたようである。 客とはいえ(主人から見て)妹だからという理由で彼女を特別扱いしなかったのか、 それともフランスではあれが普通なのか。

後半。 話がアフガニスタンの学校になったところで、 字幕に「グローズさん」という誤字が。正しくは「ダローズ」さん。 最後のモットーを書いてもらうところでも同じ誤字がもう一度。 最近あまりみかけないタイプの誤字だ。

2008-01-30 (3) 21:57:18 +0900

数学ナンセンス>任意の群から任意の群への準同型写像は群をなす

f: G -> G' を群の間の準同型写像とすると、 f は G×G' の部分集合 Γ である。 この集合の元の間には (g1, g'1)(g2, g'2) = (g1g2, g'1g'2) として積が定義される。 f(g1g2) = f(g1)f(g2) = g'1g'2 だから積は Γ の元である。

付) 某掲示板で、群の意味を理解せずに 「関数が群をなす」と言っている人を見かけた。 そこからこじつけて考えてみたもの。

付) (g1, f(g1))(g2, f(g2)) = (g1g2, f(g1g2)) と定義すれば f が準同型写像である必要はない。 ただ、「任意の群から任意の群への写像は群をなす」 と書くよりもこのほうが「おや?」と思わせる効果が高いと思われたので、 タイトル行に書いたほうを選んだ。

2008-01-30 (3) 20:24:28 +0900

最後の「付」のようにすると、 f(f(g1g2))g3) = f(g1(f(g2g3))) とは限らないから、一般には結合法則が成り立たなくて、だめか。

2009-03-21 (6) 01:12:59 +0900


すのもの Sunomono