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

    errore nel calcolo del resto

    amici, stavo studiando uno script per il calcolo dei numeri primi, quando mi sono imbattuto in errori dell'operatore resto %! come mai?:

    Codice PHP:
    <?php
    $numero
    =2353253433;
    $use=$numero/2;
    for (
    $i=2;$i<$use;$i++) {
        if (
    $numero%$i==0) {
            echo 
    "non è un numero primo, infatti è divisibile per $i
    "
    ;
            
    $risultato=$numero%$i;
            
    $ris2=$numero/$i;
            echo 
    "$numero diviso $i, il risultato è ".$ris2."
    "
    ;
            echo 
    "$numero diviso $i, il resto è ".$risultato;
            
    $check=TRUE;
            break;
        } else
        
    $check=FALSE;
    }
    if (
    $check==FALSE)
    echo 
    "è un numero primo";
    ?>
    Ad esempio questo script dà come risultato:

    non è un numero primo, infatti è divisibile per 593
    2353253433 diviso 593, il risultato è 3968386.9021922
    2353253433 diviso 593, il resto è 0


    Il che è falso!

    Quel numero non è divisibile per 593, il resto c'è eccome!
    Illuminatemi

  2. #2
    ho appena scoperto che l'operatore modulo non gestisce i numeri maggiori di 2^31-1, quindi bisogna usare in questo caso la funzione bcmod()
    bene in effetti funziona ^_^

  3. #3
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    infatti restituisce -1 perchè il tuo numero è fuori int range

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 © 2025 vBulletin Solutions, Inc. All rights reserved.