2019年3月5日火曜日

学習環境

解析入門(上) (松坂和夫 数学入門シリーズ 4) (松坂 和夫(著)、岩波書店)の第1章(数)、1.2(自然数、整数)、問題4を取り組んでみる。


  1. a ... l の任意の公倍数を

    x = p 1 r 1 p s r s

    とおく。

    このとき、

    r i µ i i = 1 , , s

    なので、

    m x

    よって、 m は最小公倍数である。

    a ... l の 任意の公約数を

    x = p 1 r 1 p s r s

    とおく。

    このとき、

    r i δ i i = 1 , , s

    が成り立つので、

    x d

    よって、 d は最大公約数である。

    (証明終)

コード

Python 3

#!/usr/bin/env python3
from sympy import pprint, symbols, randprime, lcm, gcd
import random

print('4.')

n = 10
count = 10
primes = sorted(list({randprime(1, 100) for _ in range(n)}))
exps_list = [[random.randrange(10) for _ in enumerate(primes)]
             for _ in range(count)]
nums = []
for i in range(count):
    num = 1
    for p, exp in zip(primes, exps_list[i]):
        num *= p ** exp
    nums.append(num)

mu_list = []
delta_list = []
for i, _ in enumerate(primes):
    mu_list.append(max([exps[i] for exps in exps_list]))
    delta_list.append(min([exps[i] for exps in exps_list]))

m = 1
for p, mu in zip(primes, mu_list):
    m *= p ** mu
d = 1
for p, delta in zip(primes, delta_list):
    d *= p ** delta
for o in [primes, exps_list, num, mu_list, delta_list, m, d, lcm(nums) == m, gcd(nums) == d]:
    pprint(o)

入出力結果(cmd(コマンドプロンプト)、Terminal、Jupyter(IPython))

C:\Users\...> py -3 sample4.py
4.
[11, 17, 19, 29, 53, 73, 89]
[[7, 3, 9, 4, 4, 8, 2], [1, 6, 7, 5, 1, 3, 2], [9, 9, 5, 7, 3, 1, 3], [8, 3, 8
, 7, 4, 8, 3], [0, 3, 3, 0, 0, 4, 3], [7, 7, 0, 7, 4, 8, 5], [1, 4, 8, 7, 3, 1
, 9], [3, 7, 9, 4, 4, 2, 1], [8, 7, 5, 8, 1, 1, 2], [7, 8, 5, 5, 0, 2, 2]]
291423047159579398508720407530795972949
[9, 9, 9, 8, 4, 8, 9]
[0, 3, 0, 0, 0, 1, 1]
100632270097821755057086895637377335463655457626303503445742664576542120699393
977737
31919761
True
True

C:\Users\...>

0 コメント:

コメントを投稿