Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
06/01/19 15:59
ChristianVillani
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 06/01/19 16:00
aaa
06/01/19 19:10
AldoBaldo
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.

#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.

#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 06/01/19 19: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.
07/01/19 16:37
La pappa pronta per gli esercizi scolastici è consentita su questo forum? Se è così me lo confermate che al prossimo rispondo anch'io ?
09/01/19 14:12
lumo
Come ricorda nessuno, i thread dove si chiede aiuto in questo modo sono vietati dal regolamento, quindi devo chiudere
aaa
10/01/19 20:13
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 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 11/01/19 9:43
Ibis redibis non morieris in bello
10/01/19 23:33
Ultimo
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

12/01/19 12:09
lumo
Questo topic è in violazione di una o più norme del regolamento: pierotofy.it/pages/extras/forum/9/3839-regolamento/ .
    
Dopo averlo letto riapri un nuovo topic assicurandoti di aver rispettato le regole. Grazie per la tua pazienza.
aaa