MathGroup Archive 2003

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: goldbach prime partitions for arbitrary integer n => 4

  • To: mathgroup at smc.vnet.net
  • Subject: [mg43015] Re: goldbach prime partitions for arbitrary integer n => 4
  • From: adams at wolfram.com (Adam Strzebonski)
  • Date: Fri, 8 Aug 2003 00:26:29 -0400 (EDT)
  • References: <bgsn4c$nnq$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

gilmar.rodriguez at nwfwmd.state.fl.us (Gilmar Rodríguez Pierluissi) wrote in message news:<bgsn4c$nnq$1 at smc.vnet.net>...
> If one wishes to compute:
> eqn={p+q==200}; constraints={2<=p<=100, p<=q, p,q \[Element]Primes};
> wouldn't it be nice that if you evaluate:
> Solve[eqn,constraints,{p,q}]
> you would get:
> {{97,103},{73,127},{61,139},{43,157},{37,163},{19,181},{7,193},{3,197}} ?
> A module (or program) that could solve:
> eqn={p+q==n}; constraints={2<=p<=n/2, p<=q, p,q \[Element]Primes};
> Solve[eqn,constraints,{p,q}]
> for a specified n, (n=>4, n \[Element]Integer), would be even better!
> Thank you!

In Mathematica 5 you can do it using Reduce, though it requires
changing the value of a system option. By default Reduce writes
out integer solutions of a <= x <= b explicitly if the number
of integers in [a, b] is <= 10, otherwise the solutions are
represented as

x \[Element] Integers && a <= x <= b.

For instance

In[1]:= Reduce[1<=x<=10, x, Integers]

Out[1]= x == 1 || x == 2 || x == 3 || x == 4 || x == 5 || x == 6 || x == 7 ||
>    x == 8 || x == 9 || x == 10

In[2]:= Reduce[1<=x<=11, x, Integers]

Out[2]= x \[Element] Integers && 1 <= x <= 11

This is why in your example we get

In[3]:= Reduce[p+q==200 && 2<=p<=100 && p<=q, {p, q}, Primes]

Out[3]= (p | q) \[Element] Primes && C[1] \[Element] Integers &&
>    2 <= C[1] <= 100 && p == C[1] && q == 200 - C[1]

If we make Reduce write out integer solutions of 2 <= C[1] <= 100
explicitly, it will then be able to pick out the prime solutions.
This can be done by changing the value of Reduce system option 
"DiscreteSolutionBound".

In[4]:= Developer`SetSystemOptions["ReduceOptions"->
        ("DiscreteSolutionBound"->Infinity)];

In[5]:= Reduce[p+q==200 && 2<=p<=100 && p<=q, {p, q}, Primes]

Out[5]= p == 3 && q == 197 || p == 7 && q == 193 || p == 19 && q == 181 ||
>    p == 37 && q == 163 || p == 43 && q == 157 || p == 61 && q == 139 ||
>    p == 73 && q == 127 || p == 97 && q == 103

In[6]:= ans=Reduce[p+q==20000 && 2<=p<=10000 && p<=q, {p, q}, Primes];//Timing
Out[6]= {3.15234 Second, Null}

In[7]:= ans//Short
Out[7]//Short= p == 3 && q == 19997 || <<230>>


Best Regards,

Adam Strzebonski
Wolfram Research


  • Prev by Date: Re: Need a better Integrate
  • Next by Date: Re: Problem
  • Previous by thread: Re: goldbach prime partitions for arbitrary integer n => 4
  • Next by thread: RuleCondition vs Condition