HACKING 120% {Hacking, programmazione, computer & molto altro}

Numeri felici

« Older   Newer »
  Share  
view post Posted on 4/9/2013, 11:04     +1   -1
Avatar

Water can take unforseen forms.

Group:
Founder
Posts:
5,273
Reputation:
+1,147
Location:
Shabang

Status:


Un numero felice è definito tramite il seguente processo. Partendo con un qualsiasi numero intero positivo, si sostituisca il numero con la somma dei quadrati delle sue cifre, e si ripeta il processo fino a quando si ottiene 1 (dove ulteriori iterazioni porteranno sempre 1), oppure si entra in un ciclo che non include mai 1. I numeri per cui tale processo dà 1 sono numeri felici, mentre quelli che non danno mai 1 sono numeri infelici. Una ricerca su calcolatore fino a 1020 ha fatto ipotizzare che circa il 12% dei numeri sia felice, sebbene non esista ancora dimostrazione di ciò. I numeri felici sono infiniti; è infatti evidente che, ad esempio, tutte le potenze di 10 siano numeri felici.

Ad esempio, 7 è felice, e la sequenza ad esso associata è:
7^2 = 49
4^2 + 9^2 = 97
9^2 + 7^2 = 130
1^2 + 3^2 + 0^2 = 10
1^2 + 0^2 = 1


Detto tutto ciò:

-Costruire un check di felicità per un numero.

Qui ci sono source già risolti:
http://solopc.forumcommunity.net/?t=32895457

Wet:

CODICE
def pinguinofelice(num):
  num2=0
  if num != 1:
     num2 = sum(int(i) ** 2 for i in str(num))
     try:
          pinguinofelice(num2)
     except RuntimeError:
          print(" Tricheco ")
  else:
      print(" Pinguino ")


Edited by Wet Water - 4/9/2013, 13:10
 
Web  Top
carbos
view post Posted on 4/9/2013, 12:01     +1   -1




Posso dire di non aver capito l'esercizio o.o, cmq nei numeri che elevi alla seconda, mettici ^ , sennò si legge 72 D: , cmq non ho capito come funziona questa cosa... quelle sequenze sono ognuna diversa dall'altra o sono legate per via di un quacosa?
P.S. ho capito XD quando posso ci provo ;)
 
Top
view post Posted on 4/9/2013, 12:12     +1   -1
Avatar

Water can take unforseen forms.

Group:
Founder
Posts:
5,273
Reputation:
+1,147
Location:
Shabang

Status:


Corretto la sequenza, scusa :)
 
Web  Top
iMuser
view post Posted on 4/9/2013, 12:35     +1   -1




Azz.. mi hai fatto accorgere che ho completamente dimenticato quasi tutto quello che sapevo sul C... bisogna che mi eserciti più spesso..
Comunque ora mi ci metto, vediamo che tiro fuori :D
 
Top
RootkitNeo
view post Posted on 4/9/2013, 15:02     +1   -1




Oh si, un nostro vecchio esercizio.
Appena ho un attimo lo risolvo.
 
Top
carbos
view post Posted on 6/9/2013, 12:52     +1   -1




in C, per farlo funzionare ci ho messo un po' di tempo :asd:
CODICE
#include <stdio.h>
#include <malloc.h>
int numerofelice(int);
int* inttoarr(int);
int intlen(int);
int intlen(int a){
       int i;
       for(i = 0; a > 9; i++){
               a /= 10;
       }
       return i + 1;
}
int* inttoarr(int a){
       int b = intlen(a) ;
       int c = a;
       int *res = (int*) malloc(sizeof(int) * b);
       for(int i = b - 1 ; i >= 0 ; i--){
               res[i] = c % 10;
               c /= 10;
       }
       return res;
}
int numerofelice(int a){
       int b = intlen(a);
       int *c = inttoarr(a);
       int d = 0 , i , e;
       for(i = b - 1; i >= 0; i--){
               e = (int) c[i] * c[i];
               d += (int) e;
       }
       if(d == 1){
               return 1;
       } else {
               d = numerofelice(d);
       }
}
main(){
       int b ;
       printf("Inserire il numero \n");
       scanf("%d" , &b);
       int d = numerofelice(b);
       if(d){
               printf("E' un numero felice");
       }
}


Se non è numero felice va in loop

Edited by carbos - 6/9/2013, 14:36
 
Top
view post Posted on 6/9/2013, 13:59     +1   -1
Avatar

Water can take unforseen forms.

Group:
Founder
Posts:
5,273
Reputation:
+1,147
Location:
Shabang

Status:


Lo puoi migliorare un bel po'. Per il loop ti basta mettere una variabile che si degrada ogni giro.
 
Web  Top
carbos
view post Posted on 6/9/2013, 14:43     +1   -1




Oer migliorare dove intendi? cmq alla variabile ci avevo pensato... anzi potevo fare direttamente ne for senza usare la funzione ricorsiva però dopo nn sai quante volte si deve ripetere... Forse ci saranno numeri che vogliono tanti cicli e altri di meno...
 
Top
RootkitNeo
view post Posted on 6/9/2013, 17:21     +1   -1




Ne ho postato uno ora.
Per sbaglio ho creato un altro topic, lo vedete visto che manca mezzo esercizio, eliminatelo per favore.
 
Top
view post Posted on 6/9/2013, 20:59     +1   -1
Avatar

Water can take unforseen forms.

Group:
Founder
Posts:
5,273
Reputation:
+1,147
Location:
Shabang

Status:


Proponi anche qualcosa di più complesso se hai materiale, quello era proprio basico basico :)
 
Web  Top
9 replies since 4/9/2013, 11:04   245 views
  Share