2019年10月19日土曜日

素因数分解ならばバレないかな(UTF-8版) (2 × 3 × 3 × 37 × 100267 * 1069181182133501894953)

素因数分解ならばバレないかなの第2弾です。第1弾はこちらです(リンク)。
漢字コードの処理が曖昧で環境依存する問題、構造のあるプログラムを書いている点、シェル芸botで動くようにしたい点など、色々気になる点がありました。
シェル芸の練習場で試しました

そこで書き直したのが以下のプログラムです。 #シェル芸 の実験場(リンク)で動作確認したので、シェル芸botに乗せることも可能です。僕はフォローされていないので、シェル芸bot上で実行されません。誰が乗せて頂けないでしょうか。
ruby -e "print (2 * 3 * 3 * 37 * 100267 * 1069181182133501894953).to_s(16)" | xxd -r -p
このプログラムですが、余りにもシンプルになり過ぎました。これって、UTF-8の16進数を逆に戻しているだけに近いです。つまり以下の通りです。
echo E6B2B3E9878EE5A4AAE9838E | xxd -r -p
今回のプログラム作成で一番時間がかかったのは、素因数分解です。素因数として2, 3, 3, 37, 100267があるのは、小さい値から順番に割っていくだけで分かりました。1069181182133501894953が素数かどうかの判定は1日半ループを回しても終わりませんでした。そこで、素数の判定として、以下のサイトを使い、無事、素数だと分かりました。
  • 大きい数の素数を判定してくれるサイト(リンク


0 件のコメント:

コメントを投稿