Numeri palindormi
- Login o registrati per inviare commenti
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... :)
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 :)
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?
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_palindro...
Ottima dritta :)
C'è di che divertirsi a fare tentativi... :)
- Login o registrati per inviare commenti
















20 ore 48 min fa
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.