Si considerino i 3 seguenti frammenti di programma, dove le variabili i, k e n sono di tipo Integer, le variabili finito e p sono di tipo Boolean, e n è inizializzata con un valore positivo maggiore di 1:
-
p:=TRUE; finito:=FALSE; i:=2; k:=n; while((Not finito) And (i < k)) Do begin If(n Mod i = 0) Then Begin Write('Il numero ', n, ' non e'' primo'); p:=FALSE; finito:=TRUE End; i:=i+1 end; If(p) Then Writeln('Il numero ', n, ' e'' primo'); -
p:=TRUE; finito:=FALSE; i:=2; k:=n Div 2 + 1; While((Not finito) And (i < k)) Do Begin If(n Mod i = 0) Then Begin Writeln('Il numero ', n, ' non e'' primo'); p:=FALSE; finito:=TRUE End; i:=i+1 End; If(p) Then Writeln('Il numero ', n, ' e'' primo'); -
p:=TRUE; finito:=FALSE; i:=2; k:=Round(Sqrt(n))+1; While ((not finito) And (i < k)) Do Begin If(n Mod i = 0) Then Begin Writeln('Il numero ', n, ' non e'' primo'); p:=FALSE; finito:=TRUE End; i:=i+1 End; If(p) Then Writeln('Il numero ', n, ' e'' primo');
Quale delle seguenti affermazioni è vera?
- Se n è un numero primo i tre frammenti di programma lo indicano impiegando lo stesso tempo.
- Se n è un numero primo solo i frammenti di programma A) e B) lo indicano, mentre C) può non funzionare correttamente per particolari valori di n.
- Se n è un numero primo i tre frammenti di programma lo indicano ma impiegando tempi diversi.
- Se n è un numero primo solo il frammento di programma A) lo indica, mentre B) e C) possono non funzionare correttamente per particolari valori di n.