Home > Web Front-end > JS Tutorial > JavaScript Fun Question: Diophantine Equation

JavaScript Fun Question: Diophantine Equation

黄舟
Release: 2017-01-22 15:00:15
Original
1684 people have browsed it

In mathematics, the Diophantine equation is a polynomial equation that usually has two or more unknowns and requires their integer solutions.

Given the following Diophantine equation, find all its positive integer solutions.

x² - 4y² = n

x and y are unknowns, and n is a given constant. The solution set of x, y will be displayed using the following nested array:

[[x1, y1], [x2, y2] ....]

Here are some examples:

sol_equa(90005) --> [[45003, 22501], [9003, 4499], [981, 467], [309, 37]]

sol_equa(90002) --> []

Let’s see how to solve this problem. First look at the left side of this equation, x² - 4y². At first glance, you will have a feeling that it can be transformed is (x - 2y) * (x + 2y), when you think of this, you have taken the first step.

Because the constant N on the right side of the equation may be a very large number, if the exhaustive method is used, the efficiency is very low.

We can try to decompose this constant and factor it into two terms.

For example, N=24, it can be decomposed into two items as follows:

[1,24], [2,12], [3,8], [4,6 ]

We use these possibilities to apply it to the formula:

x - 2y = 1

x + 2y = 24

----- ---------

x - 2y = 2

x + 2y = 12

......

This way It is transformed into finding a linear equation of two variables.

Finally, we can select the positive integer solution.

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;  
}
Copy after login

The above is the content of JavaScript interesting question: Diophantine equation. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template