2017年4月14日金曜日

開発環境

The Art of Computer Programming Volume 1 Fundamental Algorithms Third Edition 日本語版(Donald E. Knuth (著)、青木 孝 (著)、筧 一彦 (著)、鈴木 健一 (著)、長尾 高弘 (著)、有澤 誠 (その他)、和田 英一 (その他)、ドワンゴ)の第1章(基礎概念)、1.2(数学的な基礎)、演習問題5を取り組んでみる。


  1. 2 n+1 n+1 n+1=a·b an,bn ab n+1=a·b

コード(Emacs)

HTML5

n = <input id="n0" type="number" min="2" step="1" value="100">
<br>
<button id="run0">run</button>
<button id="clear0">clear</button>
<pre id="output0"></pre>

<script src="sample5.js"></script>

JavaScript

let input0 = document.querySelector('#n0'),
    btn0 = document.querySelector('#run0'),
    btn1 = document.querySelector('#clear0'),
    pre0 = document.querySelector('#output0'),
    p = (x) => pre0.textContent += x + '\n';

let primes = [undefined, undefined, true];
let isPrime = (n) => {
    if (primes[n] === undefined) {
        for (let i = 2; i <= n / 2; i += 1) {
            if (n % i === 0) {
                primes[n] = false;
                return false;
            }
        }
    }
    primes[n] = true;
    return true;
};
let isInt = (x) => Math.floor(x) === x;

let f = (n) => {
    for (let i = 2; i <= n; i += 1) {
        isPrime(i);
    }
    let result = '';
    for (let i = 2; i <= n; i += 1) {
        if (isPrime(i)) {
            console.log(i);
            let j = 0;
            for (; isInt(n / i);) {
                n /= i;
                j += 1;
                if (n === 1)  {
                    if (j === 1) {
                        result += `${i}`;
                    } else if (j > 1) {
                        result += `${i}^${j}`;
                    }
                    return result;
                }
            }
            if (j === 1) {
                result += `${i} * `;
            } else if (j > 1) {
                result += `${i}^${j} * `;
            }
        }
    }
};

let output = () => {
    let n = parseInt(input0.value, 10);

    for (let i = 2; i <= n; i += 1) {
        p(`${i} = ${f(i)}`);
    }
};
    

btn0.onclick = output;
btn1.onclick = () => {
    pre0.textContent = '';
};

output();
n =
2 = 2
3 = 3
4 = 2^2
5 = 5
6 = 2 * 3
7 = 7
8 = 2^3
9 = 3^2
10 = 2 * 5
11 = 11
12 = 2^2 * 3
13 = 13
14 = 2 * 7
15 = 3 * 5
16 = 2^4
17 = 17
18 = 2 * 3^2
19 = 19
20 = 2^2 * 5
21 = 3 * 7
22 = 2 * 11
23 = 23
24 = 2^3 * 3
25 = 5^2
26 = 2 * 13
27 = 3^3
28 = 2^2 * 7
29 = 29
30 = 2 * 3 * 5
31 = 31
32 = 2^5
33 = 3 * 11
34 = 2 * 17
35 = 5 * 7
36 = 2^2 * 3^2
37 = 37
38 = 2 * 19
39 = 3 * 13
40 = 2^3 * 5
41 = 41
42 = 2 * 3 * 7
43 = 43
44 = 2^2 * 11
45 = 3^2 * 5
46 = 2 * 23
47 = 47
48 = 2^4 * 3
49 = 7^2
50 = 2 * 5^2
51 = 3 * 17
52 = 2^2 * 13
53 = 53
54 = 2 * 3^3
55 = 5 * 11
56 = 2^3 * 7
57 = 3 * 19
58 = 2 * 29
59 = 59
60 = 2^2 * 3 * 5
61 = 61
62 = 2 * 31
63 = 3^2 * 7
64 = 2^6
65 = 5 * 13
66 = 2 * 3 * 11
67 = 67
68 = 2^2 * 17
69 = 3 * 23
70 = 2 * 5 * 7
71 = 71
72 = 2^3 * 3^2
73 = 73
74 = 2 * 37
75 = 3 * 5^2
76 = 2^2 * 19
77 = 7 * 11
78 = 2 * 3 * 13
79 = 79
80 = 2^4 * 5
81 = 3^4
82 = 2 * 41
83 = 83
84 = 2^2 * 3 * 7
85 = 5 * 17
86 = 2 * 43
87 = 3 * 29
88 = 2^3 * 11
89 = 89
90 = 2 * 3^2 * 5
91 = 7 * 13
92 = 2^2 * 23
93 = 3 * 31
94 = 2 * 47
95 = 5 * 19
96 = 2^5 * 3
97 = 97
98 = 2 * 7^2
99 = 3^2 * 11
100 = 2^2 * 5^2

0 コメント:

コメントを投稿