裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

算額(その1453)

2024年12月09日 | Julia

算額(その1453)

福島県三春町 田村大元神社 文政12年(1829)
令和5年(2023)2月田村高校生徒により復元

http://www.wasan.jp/fukusima/tamuradaigen2.html

街角の数学 Street Wasan ~落書き帳「○△□」~ 257.花見の座興
http://streetwasan.web.fc2.com/math17.4.25.html

キーワード:中国剰余定理
#Julia, #SymPy, #算額, #和算

満開の桜の下で,発句詩歌の会が花見をしている。咲き誇る花数を文字数に見なして,これを17文字で区切れば3文字余り,七言絶句28文字で区切れば 23 文字不足し(=5文字余り),歌31文字で区切れば8文字余る,と話している。 さて,会員たちは桜の花数を何個と見たてたのだろう。

中国剰余定理を使えば一発で答えが出る。

Julia の SymPy の元は Python の sympy である。crt はインポートされていないので,明示的に sympy.ntheory.modular.crt として呼び出す。

using SymPy

#from sympy.ntheory.modular import crt

# 剰余の条件
moduli = [17, 28, 31]   # 除数のセット
remainders = [3, 5, 8]  # 剰余のセット

# 中国剰余定理を使用して解を求める
solution = sympy.ntheory.modular.crt(moduli, remainders)  # 最小解と周期が返される

    (7789, 14756)

花の数は 7789 個である。

検算で正しい解であることがわかる。

mod.(7789, moduli) |> println

    [3, 5, 8]

ブルートフォースでやってみる。1 ミリ秒で計算できた。

@time begin
for n = 1:1000000000
    all(mod.(n, [17, 28, 31]) .== [3, 5, 8]) && (println(n); break)
end
end

    7789
      0.015988 seconds (68.58 k allocations: 2.803 MiB, 94.85% compilation time)

 


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« セルフうどん メリケンや 伏石店 | トップ | 算額(その1454) »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Julia」カテゴリの最新記事