Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

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

Search the Archive

Re: Solve stuck at 243

  • To: mathgroup at smc.vnet.net
  • Subject: [mg124232] Re: Solve stuck at 243
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Sat, 14 Jan 2012 02:58:40 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <201201130953.EAA16531@smc.vnet.net>

I am not sure what happens there but the problem seems not difficult. 
Let's first define a fast function that checks if a number is a perfect 
square:

perfectSquare =
 Compile[{{x, _Integer}}, Module[{w = N[Sqrt[x]]}, w == Round[w]],

  RuntimeAttributes -> {Listable}, Parallelization -> True]

(I haven't really tested if this is the fastest way do to that, but it 
should be pretty fast. Of course it's not guaranteed to be correct for 
extremly large numbers but we hope they won't be needed). So now we 
define our test:

test[n_] := Or @@ perfectSquare[(n - Prime[Range[2, PrimePi[n]]])/2]

In other words, we look at the differences between a number and all the 
primes less than the number (excluding 2, of course), divide by two and 
check if there are any perfect squares. If there aren't, we have our 
solution.

Catch[
 Do[If[Not[PrimeQ[i]] && Not[test[i]], Throw[i]], {i, 9, 10^4, 2}]]

5777

This is not as large as I had feared. We can actually confirm the 
computation exactly.

Select[
 Sqrt[With[{n = 5777}, (n - Prime[Range[2, PrimePi[n]]])/2]], 
IntegerQ]

{}


Andrzej Kozlowski


On 13 Jan 2012, at 10:53, Ralph Dratman wrote:

> Project Euclid asks, "What is the smallest odd composite
> that cannot be written as the sum of a prime and twice a
> square?"
>
> I tried the following equation, not really expecting it to
> work:
>
> oddComposite == Prime[m] + 2 k^2
>
> Surprisingly, the above actually does work for all the odd
> composite numbers through 237.
>
> solveInstance[oddComposite_] := Solve[{oddComposite ==
> Prime[m] + 2*k^2, k > 0, m > 0}, {k, m}, Integers];
> For[i = 9, i < 300, i = i + 2,
> If[Not[PrimeQ[i]], Print[i,": ", solveInstance[i]]]]
>
> 9: {{k->1,m->4}}
> 15: {{k->1,m->6},{k->2,m->4}}
> 21: {{k->1,m->8},{k->2,m->6},{k->3,m->2}}
> 25: {{k->1,m->9},{k->2,m->7},{k->3,m->4}}
> 27: {{k->2,m->8}}
> 33: {{k->1,m->11}}
> 35: {{k->3,m->7},{k->4,m->2}}
> 39: {{k->1,m->12},{k->2,m->11},{k->4,m->4}}
> 45: {{k->1,m->14},{k->2,m->12},{k->4,m->6}}
> 49: {{k->1,m->15},{k->2,m->13},{k->3,m->11},{k->4,m->7}}
> 51: {{k->2,m->14},{k->4,m->8}}
>
> - - - - - - snip - - - - - -
>
> 217: {{k->3,m->46},{k->5,m->39},{k->8,m->24},{k->10,m->7}}
> 219: {{k->2,m->47},{k->10,m->8}}
> 221: {{k->6,m->35},{k->9,m->17}}
> 225: {{k->1,m->48},{k->4,m->44},{k->7,m->31},{k->8,m->25}}
> 231:
> {{k->1,m->50},{k->2,m->48},{k->4,m->46},{k->5,m->42},{k->8,m
> ->27},{k->10,m->11}}
> 235:
> {{k->1,m->51},{k->2,m->49},{k->6,m->38},{k->7,m->33},{k->8,m
> ->28},{k->9,m->21}}
> 237: {{k->2,m->50},{k->7,m->34},{k->8,m->29},{k->10,m->12}}
>
> - - - - - - but then, at 243, something changes - - - - -
>
> 243: {{k->1,m->53},{k->4,m->47},{k->5,m->44},{k->10,m->14}}
> Solve::nsmet: This system cannot be solved with the methods
> available to Solve. >>
>
> 245: Solve[{245==2 k^2+Prime[m],k>0,m>0},{k,m},Integers]
> Solve::nsmet: This system cannot be solved with the methods
> available to Solve. >>
>
> 247: Solve[{247==2 k^2+Prime[m],k>0,m>0},{k,m},Integers]
> Solve::nsmet: This system cannot be solved with the methods
> available to Solve. >>
>
> ... and so on. Strange.
>
> Does anyone know why such a threshold might appear?
>
> Thank you.
>
> Ralph Dratman
>




  • Prev by Date: Re: Solve stuck at 243
  • Next by Date: Re: Can't use subscripted variables in function definition?
  • Previous by thread: Re: Solve stuck at 243
  • Next by thread: Re: Solve stuck at 243