I primi di Collatz

Se andate su Wikipedia al seguente link link troverete una chiara spiegazione sulla congettura di Collatz. Se prendiamo un qualsiasi numero e iteriamo la seguente procedura:
n^{\prime} = \begin{cases} n/2 &\mbox{if } n \equiv 0 \pmod{2}\\ 3n+1 & \mbox{if } n\equiv 1 \pmod{2} \end{cases}
la congettura afferma che prima o poi arriveremo sempre ad 1. Questo è quantomeno affascinante, il sapere cioè che ogni numero sottoposto a questa legge converga inesorabilmente ad 1 un numero finito di passi. Allora mi è venuto in mente di studiare come si comportano i numeri primi, e ho così scritto un semplice programma in c++ usando le gmplib per capire l'andamento delle orbite dei primi, ovvero del numero di iterazioni necessarie a raggiungere uno. I risultati non mostrano per adesso alcun comportamento particolare ma ancora mi riservo qualche ulteriore analisi.

#include
#include
#include
#include

int main(int argc, char *argv[])
{
int i = 0, k = 0, c = 10;
mpz_t s, n, one;

if(argc > 1)
c = strtol (argv[1], 0, 10);

mpz_init (s);
mpz_init (n);
mpz_init (one);

mpz_set_ui (s, 3);
mpz_set_ui (one, 1);

FILE *fd = fopen ("orbita.txt", "w");

while( i < c )
{
if (mpz_probab_prime_p (s, 15) == 2) // if s is definitely prime
{
mpz_set (n, s);
char *stxt = mpz_get_str(0, 10, s);
printf ("Trovato primo: %s, con orbita = ", stxt);
while ( mpz_cmp_ui (n, 1) != 0 )
{
if( mpz_tstbit(n, 0) == 0 ) // pari
{
mpz_divexact_ui (n, n, 2);
}
else
{
// n = 3*n + 1
mpz_mul_ui (n, n, 3);
mpz_add_ui (n, n, 1);
}
k++;
}
printf ("%d\n", k);
fprintf(fd, "%s %d\n", stxt, k);
free(stxt);
k = 0;
i++;
}
mpz_add_ui (s, s, 2);
}

mpz_clear (s);
mpz_clear (n);
mpz_clear (one);

fclose (fd);

return 0;
}
This entry was posted in Generale. Bookmark the permalink.

One Response to I primi di Collatz

  1. Nel nostro lavoro sulla congettura di Collatz (3n+1)/2, e sua estensione alla forma (4n +5)/3, (vedi sul nostro sito http://nardelli.xoom.it/virgiliowizard/ , Sezione Teoria dei numeri e teoria di stringa) non abbiamo trovato differenze significative tra numeri primi e numeri composti in merito al ciclo numerico, ma non escludiamo che ce ne fossero.
    Ci potrebbero essere invece altre estensioni che funzionano allo stesso modo, con la
    differenza che i relativi numeri di Collatz si fanno sempre più rari, e il ciclo numerico sempre più lungo prima di incapparne in un numero di Collatz. Conseguenza: i cicli numerici della versione originale (3n+1)/2 sono i più brevi rispetto a quelli delle successive e possibili infinite estensioni della congettura. ognuna legata ad un quadrato , e i numeri quadrati sono infiniti. Grazie per l'attenzione,
    Francesco

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>