学習環境
- Surface 3 (4G LTE)、Surface 3 タイプ カバー、Surface ペン(端末)
- Windows 10 Pro (OS)
- Nebo(Windows アプリ)
- iPad Pro + Apple Pencil
- MyScript Nebo(iPad アプリ)
- 参考書籍
代数系入門 (松坂 和夫(著)、岩波書店)の第1章(整数)、6(同値関係、合同式)、問題7.を取り組んでみる。
よって、 p で割り切れる。
ゆえに
コード(Emacs)
Python 3
#!/usr/bin/env python3
import random
def mod(a, b, m):
return (a - b) % m == 0
ps = [2, 3, 5, 7, 11]
for p in ps:
for _ in range(10):
x = random.randrange(100)
y = random.randrange(100)
print(f'({x} + {y})^{p} ≡ x^{p} + y^{p} (mod {p}):',
mod((x + y) ** p, x ** p + y ** p, p))
入出力結果(Terminal, Jupyter(IPython))
$ ./sample7.py (22 + 1)^2 ≡ x^2 + y^2 (mod 2): True (99 + 19)^2 ≡ x^2 + y^2 (mod 2): True (79 + 78)^2 ≡ x^2 + y^2 (mod 2): True (55 + 69)^2 ≡ x^2 + y^2 (mod 2): True (59 + 53)^2 ≡ x^2 + y^2 (mod 2): True (11 + 0)^2 ≡ x^2 + y^2 (mod 2): True (41 + 51)^2 ≡ x^2 + y^2 (mod 2): True (90 + 95)^2 ≡ x^2 + y^2 (mod 2): True (22 + 40)^2 ≡ x^2 + y^2 (mod 2): True (92 + 75)^2 ≡ x^2 + y^2 (mod 2): True (98 + 77)^3 ≡ x^3 + y^3 (mod 3): True (38 + 50)^3 ≡ x^3 + y^3 (mod 3): True (99 + 66)^3 ≡ x^3 + y^3 (mod 3): True (21 + 76)^3 ≡ x^3 + y^3 (mod 3): True (33 + 1)^3 ≡ x^3 + y^3 (mod 3): True (48 + 37)^3 ≡ x^3 + y^3 (mod 3): True (29 + 31)^3 ≡ x^3 + y^3 (mod 3): True (77 + 96)^3 ≡ x^3 + y^3 (mod 3): True (12 + 85)^3 ≡ x^3 + y^3 (mod 3): True (29 + 54)^3 ≡ x^3 + y^3 (mod 3): True (62 + 66)^5 ≡ x^5 + y^5 (mod 5): True (13 + 42)^5 ≡ x^5 + y^5 (mod 5): True (42 + 27)^5 ≡ x^5 + y^5 (mod 5): True (69 + 86)^5 ≡ x^5 + y^5 (mod 5): True (43 + 45)^5 ≡ x^5 + y^5 (mod 5): True (64 + 87)^5 ≡ x^5 + y^5 (mod 5): True (2 + 49)^5 ≡ x^5 + y^5 (mod 5): True (86 + 13)^5 ≡ x^5 + y^5 (mod 5): True (69 + 92)^5 ≡ x^5 + y^5 (mod 5): True (32 + 22)^5 ≡ x^5 + y^5 (mod 5): True (22 + 13)^7 ≡ x^7 + y^7 (mod 7): True (41 + 33)^7 ≡ x^7 + y^7 (mod 7): True (86 + 77)^7 ≡ x^7 + y^7 (mod 7): True (66 + 44)^7 ≡ x^7 + y^7 (mod 7): True (14 + 32)^7 ≡ x^7 + y^7 (mod 7): True (15 + 74)^7 ≡ x^7 + y^7 (mod 7): True (88 + 65)^7 ≡ x^7 + y^7 (mod 7): True (52 + 43)^7 ≡ x^7 + y^7 (mod 7): True (40 + 57)^7 ≡ x^7 + y^7 (mod 7): True (68 + 71)^7 ≡ x^7 + y^7 (mod 7): True (26 + 29)^11 ≡ x^11 + y^11 (mod 11): True (96 + 99)^11 ≡ x^11 + y^11 (mod 11): True (48 + 32)^11 ≡ x^11 + y^11 (mod 11): True (19 + 75)^11 ≡ x^11 + y^11 (mod 11): True (58 + 91)^11 ≡ x^11 + y^11 (mod 11): True (25 + 60)^11 ≡ x^11 + y^11 (mod 11): True (11 + 62)^11 ≡ x^11 + y^11 (mod 11): True (83 + 69)^11 ≡ x^11 + y^11 (mod 11): True (67 + 16)^11 ≡ x^11 + y^11 (mod 11): True (62 + 18)^11 ≡ x^11 + y^11 (mod 11): True $
HTML5
<pre id="output0"></pre> (<input id="x0" type="number" step="1" value="10"> + <input id="y0" type="number" step="1" value="15">)^ <input id="p0" type="number" step="1" value="2"> ≡ <span id="x1"></span>^<span class="p0"></span> + <span id="y1"></span>^<span class="p0"></span> (mod <span class="p0"></span>) <button id="run0">run</button> <button id="clear0">clear</button> <script src="sample7.js"></script>
JavaScript
let pre0 = document.querySelector('#output0'),
run0 = document.querySelector('#run0'),
clear0 = document.querySelector('#clear0'),
input_x0 = document.querySelector('#x0'),
input_y0 = document.querySelector('#y0'),
input_p0 = document.querySelector('#p0'),
span_x1 = document.querySelector('#x1'),
span_y1 = document.querySelector('#y1'),
span_p0 = document.querySelectorAll('.p0'),
inputs = [input_x0, input_y0, input_p0],
range = (n) => {
let result = [];
for (let i = 0; i < n; i += 1) {
result.push(i);
}
return result;
},
p = (text) => pre0.textContent += text + '\n',
clear = () => pre0.textContent = '',
mod = (a, b, m) => (a - b) % m === 0,
isPrime = (n) => {
for (let i = 2; i <= Math.sqrt(n); i += 1) {
if (n % i === 0) {
return false;
}
}
return true;
},
output = () => {
let x = parseInt(input_x0.value, 10),
y = parseInt(input_y0.value, 10),
p0 = parseInt(input_p0.value, 10);
span_x1.textContent = x;
span_y1.textContent = y;
span_p0.forEach((cls) => cls.textContent = p0)
if (isPrime(p0)) {
p(mod((x + y) ** p0, x ** p0 + y ** p0, p0));
} else {
p(`仮定を満たしていない(${p0}は素数ではない)`);
}
};
run0.onclick = output;
clear0.onclick = clear;
inputs.forEach((input) => input.onchange = output);
output();
( +
)^
≡
^ +
^
(mod )
0 コメント:
コメントを投稿