2016年9月23日金曜日

学習環境/開発環境

代数系入門 (松坂 和夫(著)、岩波書店)の第1章(整数)、3(最大公約数)、問題2.を取り組んでみる。

問題2.


  1. 7935=5796·1+2139 5796=2139·2+1518 2139=1518·1+621 1518=621·2+276 621=276·2+69 276=69·4 ( 5796,7935 )=69

  2. ( 39600,32670,25542,16863 ) =3( 13200,10890,8514,5621 ) =33( 1200,990,774,511 ) ( 1200,990 )=30( 40,33 ) 40=33·1+7 33=7·4+5 7=5·1+2 5=2·2+1 2=1 ( 1200,990 )=30 ( 30,774 )=6( 5,129 ) 129=5·25+4 5=4·1+1 4=1 ( 30,774 )=6 ( 6,511 ) 511=6·85+1 6=1·6 ( 6,511 )=1 ( 39600,32670,25542,16863 )=33·1=33

JavaScript で確認。

HTML5

<label for="numbers0">numbers: </label>
<input id="numbers0" type="text" value="5796,7935">

<div id="output0"></div>

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

JavaScript

コード(Emacs)

(() => {
    'use strict';
    var input_numbers = document.querySelector('#numbers0'),
        div_output = document.querySelector('#output0'),
        gcd,
        euclid,
        output;

    gcd = (x, y) => {
        var a = Math.max(x, y),
            b = Math.min(x, y),
            r;
        
        r = a % b;    
        for (; r !== 0; ) {
            a = b;;
            b = r;
            r = a % b;
        }
        return b;
    };
    output = () => {
        var text = input_numbers.value,
            numbers,
            answer;

        numbers = text.split(',').map((x) => parseInt(x.trim(), 10));
        answer = numbers.reduce((a, b) => gcd(a, b), numbers[0]);
        div_output.innerText = `(${text}) = ${answer}`;
    };
    input_numbers.onchange = output;
    output();
})();

0 コメント:

コメントを投稿