goo blog サービス終了のお知らせ 

裏 RjpWiki

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

算額(その1457)

2024年12月09日 | Julia

算額(その1457)

福島県耶麻郡猪苗代町中小松西浜 猪苗代小平潟天満宮 明治14年(1881)
http://www.wasan.jp/fukusima/kohiragata3.html

街角の数学 Street Wasan ~落書き帳「○△□」~ 329.小平潟天満宮(その2)
http://streetwasan.web.fc2.com/math17.11.1.html
キーワード:中国剰余定理
#Julia, #SymPy, #算額, #和算

今神前で子供が字を書いている。毎日書く総字数 M は決まっている。
  初日は,紙一枚毎に3字ずつ書いていくと,最後に2字余った。
  次の日は,紙一枚毎に5字ずつ書いていくと,4字余った。
  三日目は,紙一枚毎に7字ずつ書いていくと,6字余った。
  さらに四日目最終日は,11字ずつ書いたら10字余ったという。
  一日に書く総字数 M を求めよ。

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

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

using SymPy

#from sympy.ntheory.modular import crt

# 剰余の条件
moduli = [3, 5, 7, 11]   # 除数のセット
remainders = [2, 4, 6, 10]  # 剰余のセット

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

    (1154, 1155)

文字の数は 1154 文字である。

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

mod.(1154, moduli) |> println

    [2, 4, 6, 10]

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

@time begin
for n = 1:1000000000
    all(mod.(n, [3, 5, 7, 11]) .== [2, 4, 6, 10]) && (println(n); break)
end
end

    1154
      0.014902 seconds (22.13 k allocations: 1.218 MiB, 97.79% compilation time)

 


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 算額(その1456) | トップ | 算額(その1458) »
最新の画像もっと見る

コメントを投稿

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

Julia」カテゴリの最新記事