学習環境
- Surface、Surface ペン(端末)
- Windows 10 Pro (OS)
- Nebo(Windows アプリ)
- iPad Pro 10.5 + Apple Pencil
- MyScript Nebo - MyScript(iPad アプリ(iOS))
- 参考書籍
中学数学からはじめる暗号入門 ~現代の暗号はどのようにして作られたのか~ (知りたい!サイエンス 141) (関根 章道(著)、技術評論社))の前編(暗号の歴史あれこれ)、第5章(ユークリッドさん、お母さんを助けて)の暗号を作って解いてみよう - Part 6(素因数分解暗号)の解答を求めてみる。
219511と 63181 の最大公約数を求める。
よって最大公約数は1。
ゆえに、439022と126362の最大公約数は2。
それぞれを2で割った数を素因数分解。
よって問題の2つの数の素因数分解は、
暗号を解読。
akuy、 aims。
並べ替え。 (アナグラム)
yakusima、屋久島。
コード
Python 3
#!/usr/bin/env python3 from sympy import pprint, primerange, primefactors a = 439022 b = 126362 d = {p: chr(ord("a") + i) for i, p in enumerate(primerange(2, 102))} anagram = [] for t in [a, b]: anagram += [d[p] for p in primefactors(t)] print(anagram)
入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))
$ ./sample2.py ['a', 'k', 'u', 'y', 'a', 'i', 'm', 's'] $
0 コメント:
コメントを投稿