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:
- 2
- 2
3
4
5
6
7- 2
3
5
7
8- 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
- …