・2022年にChatGPTは無かったのかしら。です。次行は私の、
オリジナル
@kenjihiranabe(平鍋 健児) 様へ。ありがとうございます。
(本日の)ChatGPT先生へ
問題
3で割ると2余り、5で割ると3余り、7で割ると 2余るような数は何か?
:::note
**問題**
$3$ で割ると$2$余り、$5$ で割ると $3$ 余り、$7$ で割ると $2$ 余るような数は何か?
:::
(表示省略)
上記をsympyで教えて下さい。
(途中抜粋)
from sympy.ntheory.modular import crt
# 法
m = [3, 5, 7]
# 余り
a = [2, 3, 2]
x, lcm = crt(m, a)
print("x =", x)
print("周期 =", lcm)
print("一般解: x =", x, "+", lcm, "*n")
実行結果
x = 23
周期 = 105
一般解: x = 23 + 105*n
確認
from sympy.ntheory.modular import crt
m = [3, 5, 7]
a = [2, 3, 2]
x, lcm = crt(m, a)
print("最小解 =", x)
print(x % 3)
print(x % 5)
print(x % 7)
実行結果
最小解 = 23
2
3
2
一般解を数式として表示
from sympy import symbols
from sympy.ntheory.modular import crt
n = symbols('n', integer=True)
x0, period = crt([3,5,7], [2,3,2])
x = x0 + period*n
print(x)
出力
105*n + 23
...crt() は 中国剰余定理 (Chinese Remainder Theorem) を実装した SymPy の標準関数であり、合同式の連立方程式を効率よく解くことができます。