Home
Accesso / Registrazione
 di 

Numeri palindormi

5 risposte [Ultimo post]
ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
8 ore 53 min fa
Utente dal: 28/06/2011
Messaggi: 862
Utente PREMIUM

Scusate, c'è qualcuno di voi (magari un matematico) che conosce un algoritmo (da scrivere magari in C oppure in MATLAB) per calcolare i numeri palindormi?
Ovviamente intendo senza limite di lunghezza... :)

ritratto di Marco Giancola
Offline
Titolo: User
Utente
Ultima visita:
1 ora 18 min fa
Utente dal: 22/03/2011
Messaggi: 6
Utente PREMIUM
Illustro il 1° algoritmo che

Illustro il 1° algoritmo che mi è venuto in mente. Per stabilire se è palindromo o meno, scompongo un numero x nelle cifre che lo compongono; per fare ciò devo prima scoprire quante cifre ha il numero. Lo divido per 10^i inizializzando i con 0 o 1 e incrementando i di 1 finché il rapporto x/10^i non diventa <1. Chiamiamo nc il numero delle cifre di x. Divido x per 10^(nc-1). La parte intera di x/10^(nc-1) sarà la prima cifra di x; me la salvo in un array sufficientemente lungo, inoltre pongo x = x - [x/10^(nc-1)]*10^(nc-1) e rifaccio la stessa cosa sostituendo nc-1 con nc-2 ossia lo decremento di 1, e così via. Facciamo un esempio: consideriamo x = 1221 (palindromo). nc è = 4, allora divido x per 10^3 e ottengo 1,221; [1,221] = 1, salvo 1 in un array a: a[0] = 1, pongo x = 1221 - [1,221]*10^3 = 1221 - 1000 = 221 e decremento nc-1 = 3 di 1: 2; [221/10^2] = [2,21] = 2, pongo a[1] = 2 e così via finché nc-1 non si azzera. Alla fine mi ritroverò tutte le cifre del numero nell'array: 1, 2, 2, 1. A questo punto è abbastanza semplice scoprire se il numero è palindromo o meno: confronto la prima cifra con l'ultima, poi la seconda con la penultima e così via. Con questo algoritmo ci costruirei una funzione (ad es. in C) isPalindromo() che restituisce 0 (false) se il numero non è palindromo e 1 (true) se invece lo è, funzione da utilizzare all'interno del main() del programma C dove metterò un ciclo for o while che partendo da 1 fino ad un prestabilito n, incrementando ogni volta i di 1, se isPalindromo(i) = 1 darà in output i altrimenti no, ottenendo così l'elenco di tutti i numeri palindromi <= n.
Se invece utilizziamo il Java, tale algoritmo risulta superfluo. Infatti, grazie alla funzione toString() del Java si può convetire un numero nella corrispondente stringa, ossia una stringa avente per caratteri le cifre del numero, dopodiché è facile procedere per appurare se il numero sia o non sia palindromo. Probabilmente esisteranno anche altri linguaggi dotati di una siffatta funzione; magari il C# che è una sorta di imitazione del Java.

ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
8 ore 53 min fa
Utente dal: 28/06/2011
Messaggi: 862
Utente PREMIUM
Grazie per aver risposto a

Grazie per aver risposto a questa mia stravagante richiesta. :)
Ho visto solo ora il post.
La tua idea non è affatto male e sto per iniziare ad interessarmi più attivamente alla realizzazione (finora non ho avuto molto tempo, ahimè...).
Conto di non usare Java perchè preferisco il C++.
Ti/vi terrò aggiornato/i non appena ci saranno sviluppi :)

ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
8 ore 53 min fa
Utente dal: 28/06/2011
Messaggi: 862
Utente PREMIUM
Ho pensato che più che quali

Ho pensato che più che quali sarebbe interessante sapere quanti sono, ad esempio, sul numero totale dei numeri conteggiati...
Magari per scoprire che esistono tot numeri ogni totaltri...

Comunque, sempre meglio sviluppare un programma un passetto alla volta :)
Per ora vediamo di trovarli e poi ci ragiono.
Nel frattempo, Marco, tu che sei un matematico forse puoi togliermi una curiosità: oltre che per un amante compulsivo delle simmetrie come me, un numero palindromo ha qualche altra attrattiva o significato?

ritratto di Marco Giancola
Offline
Titolo: User
Utente
Ultima visita:
1 ora 18 min fa
Utente dal: 22/03/2011
Messaggi: 6
Utente PREMIUM
Sì, sarebbe interessante. Con

Sì, sarebbe interessante. Con Matlab si potrebbe realizzare facilmente un programma che generi un grafico che ad ogni ascissa intera positiva x associ il numero y di numeri palindromi presenti tra i primi x numeri naturali. Magari dall'analisi del grafico potrebbe derivare una nuova congettura sui numeri palindromi.
Per quanto riguarda invece la tua domanda finale, ti suggerisco di leggere questo articolo: http://www.matematicamente.it/cultura/matematica_curiosa/numeri_palindromi_200803303001/

ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
8 ore 53 min fa
Utente dal: 28/06/2011
Messaggi: 862
Utente PREMIUM
;)

Ottima dritta :)
C'è di che divertirsi a fare tentativi... :)

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 6 utenti e 35 visitatori collegati.

Ultimi Commenti