Home Forum VARIE Numeri palindormi

Questo argomento contiene 5 risposte, ha 2 partecipanti, ed è stato aggiornato da Piero Boccadoro Piero Boccadoro 1 anno, 10 mesi fa.

Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
  • Autore
    Articoli
  • #59336
    Piero Boccadoro
    Piero Boccadoro
    Partecipante

    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… :)

    #72398

    MarcoGiancola
    Partecipante

    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.

    #72572
    Piero Boccadoro
    Piero Boccadoro
    Partecipante

    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 :)

    #72574
    Piero Boccadoro
    Piero Boccadoro
    Partecipante

    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?

    #72579

    MarcoGiancola
    Partecipante

    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/

    #72583
    Piero Boccadoro
    Piero Boccadoro
    Partecipante

    Ottima dritta :)
    C’è di che divertirsi a fare tentativi… :)

Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)

Devi aver eseguito l’accesso per poter rispondere a questa discussione.