Il ciclo while

In questo programma verranno usati gli operatori di relazione:

Inoltre verranno usati i seguenti operatori:

Preparare la seguente pagina:

<html>

<head>

<script>

  document.write("Oggi è: " + Date()) + "<br>"

  N = prompt("Inserisci un numero")

  I = 2

  while(I < N/2) {

    resto = N % I

    if (resto == 0)

      document.write(I + " è un divisore del numero " + N + "<br>")

    I++

  }

</script>

</head>

<body>

</body>

<html>

La sezione body della pagina è vuota perchè il suo contenuto verrà sempre sovrascritto dalla funzione write dell'oggetto document.

La funzione write riceve una stringa di caratteri come parametro e la stampa nell'area del browser. L'operatore di addizione tra gli argomenti della funzione opera una concatenazione di stringhe, convertendo in stringa eventuali variabili numeriche o di altro tipo, come, ad esempio, i valori restituiti dalla funzione Date().

La funzione prompt riceve una stringa che viene ripetuta su un riquadro che compare al di sopra del browser e rappresenta l'invito rivolto all'utente di fornire un dato. Il valore scritto dall'utente nel riquadro viene memorizzato nella variabile scritta a sinistra della funzione prompt.

Il procedimento per calcolare i divisori di un numero consiste nel dividere il numero fornito dall'utente per tutti i suoi predecessori minori della metà, escluso 1.

Si crea, quindi una variabile Iche, a iniziare da 2 viene usata come divisore del numero.

Per stabilire se il numero contenuto nella variabile I è un divisore del numero N si calcola il resto della divisione tra N e I.

Ogni volta che si ottiene un resto uguale a zero si stampa il valore di I

Nota: Un'espressione può contenere operatori o chiamate di funzione. Ad esempio, la linea in cui si incrementa la variabile I può essere spostata all'interno della funzione write:

document.write(I++ + " è un divisore del numero " + N + "<br>")

In questo caso si deve osservare che l'operatore di incremento è detto di post-incremento, perchè la variabile I viene prima usata e poi incrementata


Problemi

Se un numero non ha divisori si deve stampare che è un numero primo

Osservare che per trovare i divisori di un numero, non è necessario dividere per tutti i numeri precedenti compresi tra 2 e la metà ma basta fermarsi alla radice quadrata del numero. Infatti, siccome un numero si può scrivere come prodotto di altri numeri, i più grandi fattori sono proprio la radice del numero quando N è un quadrato perfetto. Modificare il ciclo while per arrestare la ricerca dei divisori quando I raggiunge la radice di N.