[Maxima] find integer

Andrej Vodopivec andrej.vodopivec at gmail.com
Wed Jan 11 03:31:29 CST 2012


On Tue, Jan 10, 2012 at 6:00 PM, Raymond Toy <toy.raymond at gmail.com> wrote:
>
>
> On Sat, Jan 7, 2012 at 5:29 AM, Hans W. Hofmann <hawe at chefmail.de> wrote:
>>
>> Hi,
>>
>> I want to find values x to make
>>
>> [p1=-(4*x-300)/11,p2=-(35*x-1800)/44]
>>
>> p1 and p2 integer. How to do this in maxima?
>>
>
> Not sure if this is the best approach, but here is one way.
>
> solve(p1=(4*x-300)/11,x)
> solve(p2=(35*x-1800)/44,x);
>
> This gives two equations for x.  Make them equal so we get an equation in p1
> and p2, where p1 and p2 are integers.  This is a Diophantine equation.  A
> Google search shows that someone posted a Diophantine equation solver, but I
> can't find the code right now.  If I do it by hand, I get x = 44*r+64, where
> r is any integer.  This gives p1 = 16*r+4 and p2 = 35*r+10.
>
> Ray

There is a solve_lde function in the discrete package
(https://github.com/andrejv/discrete.mac):

(%i2) eliminate([p1=-(4*x-300)/11,p2=-(35*x-1800)/44], [x]);
(%o2) [-11*(-16*p2+35*p1-300)]
(%i3) solve_lde(%[1]);
(%o3) [p1=16*%k1-12,p2=35*%k1-45]
(%i4) subst(%, [p1=-(4*x-300)/11,p2=-(35*x-1800)/44]);
(%o4) [16*%k1-12=(300-4*x)/11,35*%k1-45=(1800-35*x)/44]
(%i5) solve(%[1], x);
(%o5) [x=108-44*%k1]

(of course %k1 is an integer)

Andrej


More information about the Maxima mailing list