カテゴリー
共通テスト

一次不定方程式の整数解を求める

中学生がこんな問題を解いていた。

実際は高1で勉強する数ⅠAで習う内容だが名門の中学校ではもうこんな勉強を始めている。

24x+19y=1 を満たす整数x,yを求めよという問題である。これを解くにはユークリッドの互除法を使うらしい。

数ⅠAを習っていない私には難しい問題である。しかし、とりあえず解いてみたいのでプログラムを作ってみた。

私の大好きなシラミつぶし法を使う。x、yをー100~100まで変化させて条件を満たすx、yを求める。簡単なプログラムである。

答えは一瞬で求められたが、ー100~100の間に8個もあったのに驚く。範囲を広げればきっと解は無限にあるだろう。

つまらない問題である。こんな問題で若者が苦しむのは気の毒だ。解けたからと言って何の喜びもない。

プログラムは小学生でもできるレベルだが、忠実にユークリッドの互除法を使って作っているプログラムをいくつか見つけた。

私がシラミつぶし法を推奨するのはこれで間違いなくすべての解が得られたという安心感だ。

同じ問題をPythonで解いてみた。4行でプログラムが完成する。

for x in range(-100,100):
for y in range(-100,100):
if(24*x+19*y==1):
print(‘x=’,x,’ y=’,y)

結果 同じ結果が得られた。

x= -72  y= 91
x= -53  y= 67
x= -34  y= 43
x= -15  y= 19
x= 4  y= -5
x= 23  y= -29
x= 42  y= -53
x= 61  y= -77

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

inserted by FC2 system