LoginSignup
1
2

More than 1 year has passed since last update.

[Python]ax+by=cを満たす(x,y)をPythonで求める[備忘録][数学][不定方程式]

Last updated at Posted at 2021-07-24

はじめに

先日、大学入試の問題を解いていた時に実装したコードの備忘録です。
ユークリッドの互除法に関する入試問題の解を確認できます。
Python3環境下にて、是非お使いください。

本編

python
#sympy内の関数を使用
from sympy import *

#変数x,yの定義と定数a,b,cの入力
x = Symbol('x')
y = Symbol('y')
a,b,c = map(int,input("a,b,c=??").split())

#方程式の定義
expr1 = a*x+b*y -c

#xを求める
expr2 = a*x % b -c%b
i = 0
while expr2.subs(x,i) !=0:
    expr2.subs(x,i)
    i += 1

#求めたxの値を代入し、yを求める
expr1 = expr1.subs(x,i) 
sol = solve(expr1,y)

#出力
print("x="+str(i))
print("y="+str(sol[0]))

使い方

▶a,b,cは半角スペースで区切り、入力してください。
▶外部ライブラリにつき、予めインストールを要します。(以下、入力例)

bash/zsh
conda install sympy #エラーが起これば、下のコマンドを実行してください。
pip install sympy 

留意点

  • a≠0、b≠0で入力をお願いいたします。
  • 試用していただいた@StrawBerryMoonさんに対し、この場を借りて感謝申し上げます。

不定方程式につき(x,y)が複数組存在することがあります。
あくまで入試問題の検算用に留めていただけると幸いです。

References

More Info

About me

1
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2