Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    numero divisori di un numero

    ciao a tutti ragazzi, ho bisogno del vostro aiuto per un lavoro,
    ho scritto un codice che rileva i numeri primi da 1 a 200.
    in caso positivo verra stampato il numero con scritto tra parentesi ( ok)
    in caso contrario verra stampato il numero con tra parentesi tutti i suoi divisori
    come prossimo step però mi serve identificare il numero con più divisori tra quelli realizzati,
    mi date una mano ?

  2. #2
    ti salvi in un array numero => elenco divisori, poi o ordini l'array per "numero di divisori discendente" oppure ti salvi una reference al numero che ne ha di piu nel mentre che carichi l'array in questione.

    butta giu qualche idea e poi vediamo suggerimenti piu mirati
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    ti salvi in un array numero => elenco divisori, poi o ordini l'array per "numero di divisori discendente" oppure ti salvi una reference al numero che ne ha di piu nel mentre che carichi l'array in questione.

    butta giu qualche idea e poi vediamo suggerimenti piu mirati
    parto da questa base qui
    ++$numeroDivisori mi permette di sapere il numero di divisori per ogni numero ma non so come adoperarlo per ricavare quello con più divisori.

    codice:
    for($x = 1; $x < 200 ; $x++){
        
        $divisori = "";
        $primo = true;
        
        for($y = 2; $y < $x ; $y++){
        $numeroDivisori = 0;    
            if($x%$y == 0){
                
                $primo = false;
                
                $divisori .= $y . " - ";
            ++$numeroDivisori;
            
            }
        }
        
        if($primo == true){
            echo "$x è un numero primo<hr />";
        }
        else{
            echo $x . " (" . substr($divisori,0,-3) . ")<hr />";
            
        }
    }

  4. #4
    Codice PHP:

    $maxDivisori 
    0;
    $elementoMaxDivisori 0;

    for(
    $x 1$x 200 $x++){
        
        
    $divisori "";
        
    $primo true;
        
        for(
    $y 2$y $x $y++){
        
    $numeroDivisori 0;    
            if(
    $x%$y == 0){
                
                
    $primo false;
                
                
    $divisori .= $y " - ";
            ++
    $numeroDivisori;
            
            }
        }

        if(
    $numeroDivisori $maxDivisori)
        {
             
    $elementoMaxDivisori $x;
             
    $maxDivisori $numeroDivisori;
         }
        
        if(
    $primo == true){
            echo 
    "$x è un numero primo<hr />";
        }
        else{
            echo 
    $x " (" substr($divisori,0,-3) . ")<hr />";
            
        }
    }

    echo 
    "$elementoMaxDivisori ha il maggior numero di divisori: $maxDivisori <hr />"
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    Codice PHP:

    $maxDivisori 
    0;
    $elementoMaxDivisori 0;

    for(
    $x 1$x 200 $x++){
        
        
    $divisori "";
        
    $primo true;
        
        for(
    $y 2$y $x $y++){
        
    $numeroDivisori 0;    
            if(
    $x%$y == 0){
                
                
    $primo false;
                
                
    $divisori .= $y " - ";
            ++
    $numeroDivisori;
            
            }
        }

        if(
    $numeroDivisori $maxDivisori)
        {
             
    $elementoMaxDivisori $x;
             
    $maxDivisori $numeroDivisori;
         }
        
        if(
    $primo == true){
            echo 
    "$x è un numero primo<hr />";
        }
        else{
            echo 
    $x " (" substr($divisori,0,-3) . ")<hr />";
            
        }
    }

    echo 
    "$elementoMaxDivisori ha il maggior numero di divisori: $maxDivisori <hr />"
    grazie per la risposta
    il codice però mi riporta un errore nella linea di codice
    Codice PHP:
        if($numeroDivisori $maxDivisori
    " Undefined variable: numeroDivisori"
    Ultima modifica di Wolf-Alex; 10-12-2015 a 16:52

  6. #6
    inizializza $numeroDivisori fuori dal ciclo for della $y
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    inizializza $numeroDivisori fuori dal ciclo for della $y
    perfetto funziona, grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.