Visualizzazione dei risultati da 1 a 3 su 3

Visualizzazione discussione

  1. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Piccola miglioria al codice di Leonerd

    codice:
    boolean isPrime (int n) {
       if (n%2 == 0) return false;
       for(int i=3; i < Math.sqrt(n); i+=2)
          if(n%i==0) 
             return false;
    
       return true;
    }
    In questo modo evitiamo di controllare tutti i numeri pari compresi fra 3 e la radice del numero.

    La dimostrazione del fatto che sia sufficiente iterare fino alla radice quadrata del numero è piuttosto intuitiva.
    Se un numero N non è primo, esiste almeno una coppia di numeri (X e Y) tale per cui X * Y = N
    Dato Z la radice quadrata di N, se trovo un divisore X di N maggiore di Z è ovvio che devo averne trovato prima uno (Y) minore di Z (poichè per ottenere N devo avere X * Y e Y non può certo essere maggiore di Z). Il caso "pessimo" è proprio quando X e Y sono uguali... ovvero N = X * X e X è appunto la radice quadrata di N.


    Ciao.
    Ultima modifica di LeleFT; 19-12-2016 a 11:38
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.