ChristianVillani (Normal User)
Newbie
Messaggi: 1
Iscritto: 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 |
|
AldoBaldo (Member)
Guru
Messaggi: 699
Iscritto: 08/01/2015
|
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++ |
#include <stdio.h> int main() { int N, D; printf( "Dimmi un numero intero: " ); scanf( "%d", &N ); getchar(); printf( "\nDivisori propri di %d:\n\n", N ); for( D=2; D<N; ++D ) if( 0==N%D ) printf( "%d\n", D ); return 0; }
|
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++ |
#include <stdio.h> int main() { int N, D, L; // L: limite printf( "Dimmi un numero intero: " ); scanf( "%d", &N ); getchar(); printf( "\nDivisori propri di %d:\n\n", N ); for( L=N/2+1, D=2; D<L; ++D ) if( 0==N%D ) printf( "%d\n", D ); return 0; }
|
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. |
|
nessuno (Normal User)
Guru^2
Messaggi: 6381
Iscritto: 03/01/2010
|
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à. |
|
lumo (Member)
Expert
Messaggi: 449
Iscritto: 18/04/2010
|
Come ricorda nessuno, i thread dove si chiede aiuto in questo modo sono vietati dal regolamento, quindi devo chiudere
|
|
Goblin (Member)
Expert
Messaggi: 375
Iscritto: 02/02/2011
|
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 |
|
Ultimo (Member)
Guru
Messaggi: 877
Iscritto: 22/05/2010
|
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. |
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
|
|
lumo (Member)
Expert
Messaggi: 449
Iscritto: 18/04/2010
|
|
|