mersenneforum.org

mersenneforum.org (https://www.mersenneforum.org/index.php)
-   Puzzles (https://www.mersenneforum.org/forumdisplay.php?f=18)
-   -   Sequence Question (https://www.mersenneforum.org/showthread.php?t=10232)

davar55 2008-04-23 17:45

Sequence Question
 
(In the spirit of the 3N+1 sequence question...)

Start with any positive integer N.

If N is prime (or 1) replace it with 2N+1.
If N is composite, replace it with its largest prime factor.
Repeat these steps.

For example, if N=3 we get the cycle
3 -> 7 -> 15 -> 5 -> 11 -> 23 -> 47 -> 95 -> 19 -> 39 -> 13 -> 27 -> 3.

The question is: does every N eventually evolve into this cycle?

petrw1 2008-04-24 17:29

[QUOTE] The question is: does every N eventually evolve into this cycle?[/QUOTE]

Can I just reply with: "Yes"

And if you ask "How do you know?" or "Can you prove it?" ... I would have to reply with: "I don't" and "No".

Just intuition.

henryzz 2008-04-24 19:30

i have done all up to 20 by hand and they all go into the same sequence
i strongly suspect that the answer is yes
i am just about to write a quick program to search for another sequence

Brian-E 2008-04-24 19:58

I'm pessimistic. My intuition says that the problem is no easier than the [URL="http://en.wikipedia.org/wiki/Collatz_conjecture"]3n+1 conjecture[/URL] to which davar55 refers and therefore - unless someone can find a second cycle by searching - it will not be solvable with currently known techniques. Even if a second cycle is found and maybe others too, we still won't be able to prove that all numbers reduce to one of these cycles.

Siemelink 2008-04-24 20:09

[QUOTE=henryzz;132132]i have done all up to 20 by hand and they all go into the same sequence
i strongly suspect that the answer is yes
i am just about to write a quick program to search for another sequence[/QUOTE]

You only have start with the primes. As soon as the factor is smaller then your start prime you're done. This is likely to happen quickly, especially when your test candidate has multiple factors.
But a proof....

Willem.

henryzz 2008-04-25 20:25

i have finished writing my programand have tested up to 10 million
does anyone have anymore suggestions of optimizations that i can implement

petrw1 2008-04-25 22:02

I would consider saving in an array all numbers (prime or otherwise) encountered so far. Whenever your current chain matches one of those you can skip to the next chain knowing it will eventually end in 3.

I suspect that most will abort a lot sooner.

I believe the astutue programmers call this memoization.

henryzz 2008-04-26 07:28

[quote=petrw1;132194]I would consider saving in an array all numbers (prime or otherwise) encountered so far. Whenever your current chain matches one of those you can skip to the next chain knowing it will eventually end in 3.

I suspect that most will abort a lot sooner.

I believe the astutue programmers call this memoization.[/quote]
when i last posted i had one idea and it was that
i am going to my grandmother's 80th birthday meal 2day and i wont be back until 2morrow lunch time
i will program it then

henryzz 2008-04-27 17:12

[quote=petrw1;132194]I would consider saving in an array all numbers (prime or otherwise) encountered so far. Whenever your current chain matches one of those you can skip to the next chain knowing it will eventually end in 3.

I suspect that most will abort a lot sooner.

I believe the astutue programmers call this memoization.[/quote]
i have programed this :smile:
unfortunatly it only takes off a fifth of the time:mad:
are there any more suggestion?

Brian-E 2008-04-27 20:28

[quote=henryzz;132247]i have programed this :smile:
unfortunatly it only takes off a fifth of the time:mad:
are there any more suggestion?[/quote]
My guess is that a lot depends on how you implement the check of whether a number has been seen before. Obviously there are simple but very inefficient ways of doing this - and the most inefficient would take much more time than just following the chain to the end without the check. It's a non-trivial problem but I think if you try to optimize your method of checking for previous occurence you might dramatically improve the speed.

petrw1 2008-04-28 05:14

What I would do is create a boolean array.

Every time you get a number in the sequence check the array. If it is true you have a match. Otherwise turn it to true.


All times are UTC. The time now is 00:39.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.