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

裏 RjpWiki

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

算額(その1454)

2024年12月09日 | Julia

算額(その1454)

山形県高畠町亀岡 亀岡文殊(松髙山大聖寺文殊堂)
五輪教一:黄金比の眠るほこら,日本評論社,2015年7月10日
キーワード:中国剰余定理
#Julia, #SymPy, #算額, #和算

ある同好会の一行が亀岡文殊を参拝した。総人数を x としたとき,x を 5 で割れば 1 余り,7 で割れば 2 余り,9 で割れば 3 余り,11 で割れば 4 余り,13 で割れば 5 余り,17 で割れば 6 余る。総人数は何人か。

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

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

using SymPy

#from sympy.ntheory.modular import crt

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

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

    (698196, 765765)

総勢 698196 人である。

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

mod.(698196, moduli) |> println

    [1, 2, 3, 4, 5, 6]

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

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

    698196
      0.105789 seconds (4.90 M allocations: 213.974 MiB, 23.61% gc time, 14.33% compilation time)

 


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

コメントを投稿

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

Julia」カテゴリの最新記事