Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Trovare i divisori propri di un numero
Forum - C/C++ - Trovare i divisori propri di un numero

Avatar
ChristianVillani (Normal User)
Newbie


Messaggi: 1
Iscritto: 06/01/2019

Segnala al moderatore
Postato alle 16:59
Domenica, 06/01/2019
Questo topic è stato chiuso dal moderatore

Salve sono alle prime armi e non riesco ad andare avanti mi potreste aiutare?

Trovare i divisori propri di un numero

Ultima modifica effettuata da ChristianVillani il 06/01/2019 alle 17:00
PM
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 20:10
Domenica, 06/01/2019
Non avendo idea di cosa potesse mai essere un "divisore proprio", ho cercato e ho trovato questa definizione: "Definizione 1.11. Chiamiamo divisore proprio di un numero un suo divisore diverso dal numero stesso e dall’unità."

Dunque il problema pare piuttosto semplice da risolvere, stante che si può prendere il numero intero N del quale trovare i divisori propri e cominciare a dividerlo per un altro numero intero D a partire da 2 per salire fino a N-1. Ad ogni passaggio si verifica se si ha o non si ha un resto -- se c'è un resto, D non è un divisore proprio, se non c'è un resto, D è un divisore proprio.

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main() {
  4.     int N, D;
  5.  
  6.     printf( "Dimmi un numero intero: " );
  7.     scanf( "%d", &N );
  8.     getchar();
  9.  
  10.     printf( "\nDivisori propri di %d:\n\n", N );
  11.  
  12.     for( D=2; D<N; ++D )
  13.         if( 0==N%D ) printf( "%d\n", D );
  14.  
  15.     return 0;
  16. }



Visto che un intero non può essere diviso senza lasciar resti da un altro intero che sia maggiore della sua metà, in effetti è inutile verificare la condizione di divisibilità per tutti i valori di D superiori a N/2, quindi si potrebbe aggiungere una condizione per dimezzare la quantità dei calcoli effettuati. In questo caso il limite è stato memorizzato nella variabile L prima di entrare nel ciclo.

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main() {
  4.     int N, D, L; // L: limite
  5.  
  6.     printf( "Dimmi un numero intero: " );
  7.     scanf( "%d", &N );
  8.     getchar();
  9.  
  10.     printf( "\nDivisori propri di %d:\n\n", N );
  11.  
  12.     for( L=N/2+1, D=2; D<L; ++D )
  13.         if( 0==N%D ) printf( "%d\n", D );
  14.  
  15.     return 0;
  16. }


Ultima modifica effettuata da AldoBaldo il 06/01/2019 alle 20:15


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6381
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:37
Lunedì, 07/01/2019
La pappa pronta per gli esercizi scolastici è consentita su questo forum? Se è così me lo confermate che al prossimo rispondo anch'io ?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 15:12
Mercoledì, 09/01/2019
Come ricorda nessuno, i thread dove si chiede aiuto in questo modo sono vietati dal regolamento, quindi devo chiudere

PM
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 21:13
Giovedì, 10/01/2019
Concordo al 100% sul fatto che fornire la pappa pronta non è istruttivo, e cercare di far ragionare l'utente lo sprona ad arrivare ad una sua soluzione, MA ..... il modo in cui AldoBaldo ha esposto la soluzione equivale ad un libro stampato, dunque a questo punto, se Christian ha un neurone ancora attivo (oltre i ringraziamenti e ai vari ceri), dovrebbe studiarsi sia il sorgente che la spiegazione.

Ultima modifica effettuata da Goblin il 11/01/2019 alle 10:43


Ibis redibis non morieris in bello
PM
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 0:33
Venerdì, 11/01/2019
Testo quotato

Postato originariamente da Goblin:

Concordo al 100% sul fatto che fornire la pappa pronta non è istruttivo, e cercare di far ragionare l'utente lo sprona ad arrivare ad una sua soluzione, MA ..... il modo in cui AldoBando ha esposto la soluzione equivale ad un libro stampato, dunque a questo punto, se Christian ha un neurone ancora attivo (oltre i ringraziamenti e ai vari ceri), dovrebbe studiarsi sia il sorgente che la spiegazione.  



:k:

Comunque se è alle prime armi come ha scritto, dubito che ci abbia capito qualcosa, quel codice è di

alto livello ;)


If ok Then GOTO Avanza else GOTO Inizia

PM
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 13:09
Sabato, 12/01/2019
Questo topic è in violazione di una o più norme del regolamento: http://www.pierotofy.it/pages/extras/forum/9/3839-regolame ... .
    
Dopo averlo letto riapri un nuovo topic assicurandoti di aver rispettato le regole. Grazie per la tua pazienza.

PM