学習環境
- Surface 3 (4G LTE)、Surface 3 タイプ カバー、Surface ペン(端末)
- Windows 10 Pro (OS)
- Nebo(Windows アプリ)
- iPad Pro + Apple Pencil
- MyScript Nebo(iPad アプリ)
- 参考書籍
数学読本〈6〉線形写像・1次変換/数論へのプレリュード/集合論へのプレリュード/εとδ/落ち穂拾い など(松坂 和夫(著)、岩波書店)の第23章(数学の中の女王 - 数論へのプレリュード)、23.2(合同式)、nを法とする既約剰余類、オイラーの関数、問9.を取り組んでみる。
コード(Emacs)
Python 3
#!/usr/bin/env python3
from sympy import gcd
for n in range(2, 21):
count = 0
for m in range(1, n):
if gcd(n, m) == 1:
count += 1
print(f'φ({n}) = {count}')
入出力結果(Terminal, Jupyter(IPython))
$ ./sample9.py φ(2) = 1 φ(3) = 2 φ(4) = 2 φ(5) = 4 φ(6) = 2 φ(7) = 6 φ(8) = 4 φ(9) = 6 φ(10) = 4 φ(11) = 10 φ(12) = 4 φ(13) = 12 φ(14) = 6 φ(15) = 8 φ(16) = 8 φ(17) = 16 φ(18) = 6 φ(19) = 18 φ(20) = 8 $
HTML5
<pre id="output0"></pre> <button id="run0">run</button> <button id="clear0">clear</button> <script src="sample9.js"></script>
JavaScript
let pre0 = document.querySelector('#output0'),
btn0 = document.querySelector('#run0'),
btn1 = document.querySelector('#clear0'),
p = (x) => pre0.textContent += x + '\n',
is_prime = (n) => {
for (let i = 2; i <= Math.sqrt(n); i += 1) {
if (n % i === 0) {
return false;
}
}
return true;
},
gcd = (n, m) => {
let t = 1,
l = Math.min(n, m);
for (let i = 2; i <= l; i += 1) {
if (n % i === 0 && m % i === 0) {
t = i;
}
}
return t;
}
let output = () => {
for (let n = 2; n <= 20; n += 1) {
let count = 0;
for (let m = 1; m <= n - 1; m += 1) {
if (gcd(n, m) === 1) {
count += 1;
}
}
p(`φ(${n}) = ${count}`);
}
};
btn0.onclick = output;
btn1.onclick = () => pre0.textContent = '';
output();
0 コメント:
コメントを投稿