2018年4月1日日曜日

学習環境

数学読本〈6〉線形写像・1次変換/数論へのプレリュード/集合論へのプレリュード/εとδ/落ち穂拾い など(松坂 和夫(著)、岩波書店)の第23章(数学の中の女王 - 数論へのプレリュード)、23.2(合同式)、nを法とする既約剰余類、オイラーの関数、問9.を取り組んでみる。


  1. 1 φ 2 = 1
    1 , 2 φ 3 = 2
    1 , 3 φ 4 = 2
    1 , 2 , 3 , 4 φ 5 = 4
    1 , 5 φ 6 = 2
    φ 7 = 6
    1 , 3 , 5 , 7 φ 8 = 4
    1 , 2 , 4 , 5 , 7 , 8 φ 9 = 6
    1 , 3 , 7 , 9 φ 10 = 4
    φ 11 = 10
    1 , 5 , 7 , 11 φ 12 = 4
    φ 13 = 12
    1 , 3 , 5 , 9 , 11 , 13 φ 14 = 6
    1 , 2 , 4 , 7 , 8 , 11 , 13 , 14 φ 15 = 8
    1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 φ 16 = 8
    φ 17 = 16
    1 , 5 , 7 , 11 , 13 , 17 φ 18 = 6
    φ 19 = 18
    1 , 3 , 7 , 9 , 11 , 13 , 17 , 19 φ 20 = 8

コード(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 コメント:

コメントを投稿