素数とか剰余に興奮する
自鯖のアレな部分に暗号かけて、それを引数でゴニョゴニョしてアレするページを昔作ったときに、
素数と剰余を嫌というほど使ってうんこちゃんなんですが、
数学マニアの道の超基本なので中学生とか高校生の人たちは今のうちに素数と剰余の世界を把握しとけばいいのかもしんない。

プログラムの世界では素数は主に暗号化に使われるし、剰余はほとんどのプログラムを書くときに絶対といっていいほど使うと思われるので、
個人的には特に剰余は絶対知らないとヤバイんですが日本の数学教師はうんこちゃんだからそのへん詳しく教えてくれないじゃん。

簡単に言えば、剰余ってのはどんな数字だろーが、指定した数字の範囲の世界へと引き込む計算みたいな感じで、
例えば

for (int i = 0; i < 10; i++) {
print i;
}

とやれば、結果は
0
1
2
3
4
5
6
7
8
9
となりますが、ここで剰余を使うことによって、この0〜9の世界を任意の世界に変えることが可能になります。

例として0〜2の世界を作ってみましょ。

for (int i = 0; i < 10; i++) {
print i % 3;
}

こうすると、結果は

0 (0 % 3 = 0余り0)
1 (1 % 3 = 0余り1)
2 (2 % 3 = 0余り2)
0 (3 % 3 = 1余り0)
1 (4 % 3 = 1余り1)
2 (5 % 3 = 1余り2)
0 (6 % 3 = 2余り0)
1 (7 % 3 = 2余り1)
2 (8 % 3 = 2余り2)
0 (9 % 3 = 3余り0)

となるわけです。

どんな数字だろーと、任意の数字の世界へと誘う素敵な剰余なんですから、
例えば先日、正式版になったMagical Blockなんかだと




問題選択画面では、選択してるカーソルと、問題番号がありますが、
カーソルの位置座標(X,Y)は

X = 10(くらい)
Y = 選択中の問題数 % 10 * 24(適当)

みたいな感じです。

例えば、問題1を選択している場合、座標Yは

Y = 1 % 10 * 24
= 1(0余り1) * 24
= 24
となります。

問題11の場合は
Y = 11 % 10 * 24
= 1(1余り1) * 24
= 24
となります。

つまり、問題1も問題11も同じY座標という指定ができます。

Magical Blockの場合、
上キー 問題数 - 1
下キー 問題数 + 1
左キー 問題数 - 10
右キー 問題数 + 10
となっていて、
選択問題数は押されたキーに応じて変動すればいいですが、
画面に表示するカーソルの位置については、
この値を % 10してあげることで、
問題数の中に0〜9の世界を作ってあげてるんです。



とまぁ、今さら何言ってんのって人か、さっぱりわかんねーよハゲって人しかいないと思いますが、
なんかすげー剰余について語りたくなっただけなので(´Д`;)



素数については
http://www.maitou.gr.jp/rsa/rsa01.php
このサイトで教えてくれるRSA暗号をかじると良い感じです。

昨日の夜にテレビでやってたコマネチ大学でも素数について扱っていて、
なんでも今んとこ980万桁の素数までわかってるとか、そんな果てしない素数を日々計算されられている計算機はとても恵まれたCPUだと思いますよ。
世の中にはWindowsとエロゲーの計算だけして死んでいくCPUもあるんだから・・・。
Comment投稿

豚小屋

糞豚大先生