2007 – 5

Si consideri la seguente funzione:

void ES5(int n, int d)
{
    while(n != 1)
        if(n%d == 0)
        {
            printf("%d\n", d);
            n=n/d;
        }
        else
            ++d;
}

Dire cosa stampa su schermo la chiamata ES5(210, 2).

Risposte:

  1. 2
  2. 2
    3
    4
    5
    6
    7
  3. 2
    3
    5
    7
    8
  4. Nessuna delle precedenti.

Soluzione: d (Nessuna delle precedenti).


Osserva i passi del while() nella funzione

n d out
210 2
210 != 1 210%2 = 0
210/2 = 105
2
105 != 1 105%2  = 1 3
105 != 1 105%3 = 0
105/3 = 35
2|3
35 != 1 35%3 = 2 4
35 != 1 35%4 = 3 5
35 != 1 35%5 = 0
35/5 = 7
2|3|5
7 != 1 7%5 = 2 6
7 != 1 7%6 = 1 7
7 != 1 7%7 = 0
7/7 = 1
2|3|5|7

Visualizza in ordine i numeri primi che dividono n, eventualmente più volte

  • ES5(16,2) –> out=2|2|2|2
  • ES5(20,2) –> out=2|2|5