ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の楽しい質問: ディオファントス方程式
数学におけるディオファントス方程式は、通常 2 つ以上の未知数を含む多項式であり、その整数解が必要です。
次のディオファントス方程式が与えられた場合、そのすべての正の整数解を求めます。
x² - 4y² = n
x と y は未知の数、n は与えられた定数です。 x、y の解セットは、次のネストされた配列を使用して表示されます:
[[x1, y1], [x2, y2] ....]
いくつかの例を示します:
sol_equa(90005) -- > ; [[45003, 22501], [9003, 4499], [981, 467], [309, 37]]
sol_equa(90002) --> この質問の解決方法を見てみましょう, まずこの方程式の左辺 x² - 4y² を見てください。このステップを考えると、一見すると (x - 2y) * (x + 2y) に変換できるように感じます。最初の一歩を踏み出しました。
方程式の右辺の定数 N は非常に大きな数になる可能性があり、網羅的手法を使用すると効率が非常に低くなるためです。
この定数を分解して 2 つの項に因数分解してみることができます。
たとえば、N=24 を 2 つの項に分解すると、次の可能性があります:
[1,24]、[2,12]、[3,8]、[4,6]
これらを取り上げます。式が適用されます:
x - 2y = 1
x + 2y = 24
--------------
x - 2y = 2
x + 2y = 12
......
これは、2 変数の線形方程式を求めることに変換されます。
最後に、正の整数の解を選択するだけです。
function solequa(n) { var result = []; for(var a=1,b=n;a<=b;a++){ if(n % a == 0){ b = n / a; var x = (a + b) / 2; var y = (b - a) / 4; if(parseInt(x) == x && parseInt(y) == y && x >=0 && y >= 0){ result.push([x,y]); } } } return result; }
上記は JavaScript の楽しい質問: ディオファントス方程式の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。