Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-10-2005, 19:33   #1
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
[C] Numeri perfetti

Ciao a tutti!!!

Ho un problema da risolvere ed è il seguente:

Scrivere un programma che dato in input un intero n, restituisce tutti i numeri perfetti fino n

Io ho provato a farlo, volevo sapere se andavo bene, perché come metto numeri un pò più grandi per trovare il numero perfetto ci mette un pò di più:

Codice:
#include <stdio.h>

int main(void){
    
    int n,i,j, sum_div;
    
    printf("Inserisci un numero maggiore di 2: ");
    scanf("%d", &n);
    
    for(i=2; i<=n; ++i){
       sum_div=0;
       for(j=2; j<=i; ++j)
          if(i%j==0){
            sum_div+=(i/j);
            continue;
          }
          else continue;
       if(sum_div==i){
         printf("%d ", i);
         continue;
       }
       else continue;
    }
    
    return 0;
}
Grazie!
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2005, 19:57   #2
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da Manugal
Ciao a tutti!!!

Ho un problema da risolvere ed è il seguente:

Scrivere un programma che dato in input un intero n, restituisce tutti i numeri perfetti fino n

Io ho provato a farlo, volevo sapere se andavo bene, perché come metto numeri un pò più grandi per trovare il numero perfetto ci mette un pò di più:

Codice:
#include <stdio.h>

int main(void){
    
    int n,i,j, sum_div;
    
    printf("Inserisci un numero maggiore di 2: ");
    scanf("%d", &n);
    
    for(i=2; i<=n; ++i){
       sum_div=0;
       for(j=2; j<=i; ++j)
          if(i%j==0){
            sum_div+=(i/j);
            continue;
          }
          else continue;
       if(sum_div==i){
         printf("%d ", i);
         continue;
       }
       else continue;
    }
    
    return 0;
}
Grazie!
Ehm cos'è un numero perfetto?

Io sapevo che era il 3 il numero perfetto, no?
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2005, 20:36   #3
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da Manugal
come metto numeri un pò più grandi per trovare il numero perfetto ci mette un pò di più
Tieni conto del fatto che, quando verifichi se N è perfetto, devi fare O(N) verifiche di divisibilità... non mi stupisce che su numeri grandini ti ci voglia un bel po' di tempo.
Quote:
Codice:
    for(i=2; i<=n; ++i){
       sum_div=0;
for(j=2; j<=i; ++j)
Nella definizione di numero perfetto, 1 è considerato un divisore.
Perciò, o fai il ciclo su j a partire da j=1, o inizializzi sum_div a 1 a ogni nuova iterazione su i.
Quote:
Codice:
          if(i%j==0){
            sum_div+=(i/j);
            continue;
          }
In realtà puoi aumentare di j, perché se a un'iterazione trovi il divisore j, a un'altra trovi il divisore i/j.
(A meno che non sia i=j^2, ma comunque quello va contato una volta sola.)
Quote:
Codice:
          else continue;
       if(sum_div==i){
         printf("%d ", i);
Tu conti i divisori di i fino a i incluso.
Quindi, quando hai finito, i è perfetto se e solo se sum_div è uguale a 2i.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2005, 20:43   #4
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da AnonimoVeneziano
cos'è un numero perfetto?
Un numero N>1 si dice perfetto, se è uguale alla somma di tutti i suoi divisori, incluso 1 ed escluso N.
Un numero pari è perfetto se e solo se ha la forma (2^(n-1))((2^n)-1) con (2^n)-1 primo: quindi 6=(2^(2-1))((2^2)-1) è primo, e così anche 28=(2^(3-1))((2^3)-1), ma non 120=(2^(4-1))((2^4)-1).
Non si conoscono numeri perfetti dispari, né si sa se ne esistano. Si sa però che, se esistessero, avrebbero almeno 300 cifre decimali.

Fonte: Wikipedia.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2005, 21:03   #5
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
Quote:
Originariamente inviato da Manugal
Io ho provato a farlo, volevo sapere se andavo bene, perché come metto numeri un pò più grandi per trovare il numero perfetto ci mette un pò di più:
Se e' la prestazione che cerchi:

Codice:
#include <stdio.h>

void main(void){
    
    unsigned long i,j,k,l,m,n;
    
    printf("Inserisci un numero maggiore di 2: ");
    scanf("%ld", &n);
    
    for(i=2;(j=(1L<<(i-1))*((1L<<i)-1))<=n;i++)
    {
	for(m=0,l=(1L<<i)-1,k=2;k*k<=j;k+=k==2?1:2)
	{
	    if((l%k)==0)
	    {
		m=1;
		break;
	    }
	}
	if(m==0)
            printf("%ld ",j);
    }
}
NOTA: Potrebbero esserci degli errori l'ho scritta di getto in pochi minuti ed e' scarsamente ottimizzata.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2005, 21:20   #6
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Grazie per la spiegazione Ziosilvio!
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2005, 14:08   #7
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Grazie delle risposte, però mi sembra molto strano che un numero N è perfetto se e solo se la somma di tutti i suoi divisori tranne N danno esattamente il numero N. Ad esempio considero il numero 6 (che è il più semplice numero perfetto). Secondo quello che ho pensato io faccio 6/2 (primo divisore) e viene 3 poi 6/3 (secondo divisore) e viene 2 e poi 6/6 (terzo divisore) e viene 1. Sommandoli viene esattamente 6. Se facessi come dite voi, innanzitutto se considero anche 1 come divisore già sono fuori con la somma (ma mettiamo il caso che non lo consideri), se io non considero poi, nel caso di 6, il 6 stesso come divisore, la somma dei divisori mi viene 5 e non 6 quindi non sarebbe più numero perfetto. Spero di essere stato chiaro.

Ultima modifica di Manugal : 18-10-2005 alle 14:16.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2005, 16:09   #8
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
up
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2005, 18:10   #9
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
quando in un thread interviene Ziosilvio mi sento umiliato...
quando in un thread interviene repne scasb mi sento avvilito...
quanto intervengono entrambi mi viene voglia di suicidarmi...
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 18-10-2005, 19:39   #10
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da Manugal
mi sembra molto strano che un numero N è perfetto se e solo se la somma di tutti i suoi divisori tranne N danno esattamente il numero N. Ad esempio considero il numero 6 (che è il più semplice numero perfetto). Secondo quello che ho pensato io faccio 6/2 (primo divisore) e viene 3 poi 6/3 (secondo divisore) e viene 2 e poi 6/6 (terzo divisore) e viene 1. Sommandoli viene esattamente 6.
Uhm... tu così non stai facendo la somma dei divisori, ma quella dei quozienti.
Infatti, quando j divide i, allora tu incrementi la somma non di j, ma di i/j.

Però --- ed è una cosa che, mea culpa, non avevo notato subito --- i divisori sono in corrispondenza uno-a-uno con i quozienti, e al divisore i corrisponde proprio il quoziente 1.
Inoltre, ci vuole poco a notare che anche i quozienti sono divisori, e i divisori quozienti.

Perciò, ripensandoci... mi sa che il tuo programma iniziale andava già bene.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2005, 05:50   #11
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Ah ecco ora ho capito.. Ho fatto confusione tra quoziente e divisore, io infatti calcolo il quoziente e sommo il quoziente. Grazie.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 19-10-2005, 15:55   #12
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Scusate ma ancora non ho capito bene. Nell'ultimo passaggio mi hai detto che io aumento la somma di i/j, ma così sommerei i quozienti non i divisori come dovrei invece fare.. quindi in teoria il mio prog sarebbe errato? O no?
Manugal è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Smascherata la truffa dei finti SSD da 1...
Xiaomi 18 Pro: chip a 2 nm, Privacy Disp...
Il 71% degli autovelox italiani era fuor...
La Cina svela descrive la sua arma a mic...
Le 12 offerte Amazon TOP del weekend: ai...
Mini proiettore portatile a 36,99€: otti...
RTX 5070 a 599€ e RTX 5060 Ti a 357€, do...
In Cina il mega-impianto solare a sali f...
Xiaomi Air Fryer Essential 6L: ha tutto ...
Apple riduce la produzione di iPhone 17:...
Lancio del razzo spaziale cinese Lunga M...
SpaceX Starship: Super Heavy Booster 20 ...
Questa RTX 3070 è tornata in vita...
Un ricercatore scopre uno script bash na...
Robot umanoidi teleoperati eseguono le p...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:37.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v