Numeri felici

« Older   Newer »
 
  Share  
.
  1. nikitheve
     
    .

    User deleted


    CODICE
    def Felice(num):
       """Ritorna True se num e' un numero felice"""
       cifre = []
       num2 = 0
       for i in range(len(str(num))):
           cifre.append(int(str(num)[i]))
       if cifre == [4]:
           return False
       elif cifre == [1]:
           return True
       else:
           for i in range(len(cifre)):
               num2 += cifre[i]**2
           if Felice(num2):
               return True
           else:
               return False
           
    def Felici(num):
       """Stampa la lista dei numeri felici compresi tra 0 e num (esclusi)"""
       felici = []
       for i in range(1, num):
           if Felice(i):
               felici.append(i)
       print felici
     
    Top
    .
  2. (!_!)
     
    .

    User deleted


    CODICE
    def pinguinofelice(num):
       num2=0
       if num != 1:
           for x in list(str(num)):
               num2+=int(x)**2
           try:
               pinguinofelice(num2)
           except RuntimeError:
               print(" Tricheco ")
       else:
           print(" Pinguino ")
     
    Top
    .
  3. massimop1973
     
    .

    User deleted


    rieccomi dopo tanto tempo, mando la mia soluzione al problema
    CODICE
    public static boolean isFelice(int num) {
           
                   // inserisco le singole cifre del numero
                   ArrayList<Integer> cifre = new ArrayList<Integer>();
                   
                   // se nuovoNumero e' gia' contenuto qui, allora non è felice
                   ArrayList<Integer> tmp = new ArrayList<Integer>();
                   
                   int nuovoNum = num;
                   
                   while (nuovoNum != 1) {
                           
                           tmp.add(nuovoNum);
                           
                           cifre.clear();
                           // separo le cifre e le metto in un ArrayList cifre
                           while (nuovoNum != 0) {
                                   
                                   cifre.add(nuovoNum % 10);
                                   nuovoNum /= 10;
                           }
                           
                           // accumulo in nuovoNum la somma dei quadrati delle singole cifre
                           for (Integer n : cifre) {
                                   
                                   nuovoNum += n*n;
                           }
                           
                           // verifico se nuovoNum è già contenuto in tmp, se si allora
                           // il numero non è felice
                           if (tmp.contains(nuovoNum)) {
                                   
                                   return false;
                           }
                   }
                   
                   return true;
           }
     
    Top
    .
32 replies since 5/11/2009, 17:09   709 views
  Share  
.