CITTÀ DI AFRAGOLA

Informatica!
Appunti dal laboratorio
3!
Esercizio 1!
•  Scrivere un programma che chieda
all’utente un numero e dica se è primo o
meno.!
L’idea di base!
•  L’idea di base per risolvere il problema è,
dato x, controllare tutti i numeri da 1 a x
incluso e contare quanti tra loro sono
divisori di x!
•  Se il conteggio è 2, x è primo (perché ci
sono solo 1 e x stesso che lo dividono)!
•  Altrimenti, x non è primo!
3 Diagramma di flusso!
4 Codice!
…!
int x;!
cin >> x;!
int c = 0;!
int y = 1;!
while (y <= x) {!
!if (x%y == 0)!
! !c++;!
!y++;!
}!
if (c == 2)!
!cout << “x e’ primo\n”;!
else!
!cout << “x non e’ primo\n”;!
…!
5 Esercizio 2!
•  Modificare il codice in modo che il
programma funzioni a ciclo continuo finché
l’utente inserisce uno zero, al che termina!
•  Attenzione: non vogliamo che il
programma faccia il controllo se zero è
primo o meno, ma deve terminare subito!
6 Soluzione!
…!
int x,c,y;!
cin >> x;!
while (x!=0) {!
!c = 0;!
!y = 1;!
!while (y <= x) {!
! !if (x%y == 0)!
! ! !c++;!
! !y++;!
!}!
!if (c == 2)!
! !cout << “x e’ primo\n”;!
!else!
! !cout << “x non e’ primo\n”;!
!cin >> x;!
}!
…!
7 Commenti sulla soluzione!
•  Non si può usare il do…while perché se
l’utente immette subito uno zero il
programma esegue comunque il controllo
sulla x: bisogna fare un cin fuori dal ciclo
while e poi farne un altro alla fine del ciclo
while, per poi ripetere il controllo (x!=0)!
•  Ogni volta y e c devono essere riportati al
loro valore iniziale (altrimenti il conteggio dei
divisori risulta sbagliato per le x successive
alla prima)!
8 Esercizi con il ciclo for!
1.  scrivere un programma che stampi su
schermo i primi 100 numeri a partire da 1!
2.  scrivere un programma che stampi su
schermo i primi 100 numeri pari a partire
da 2!
3.  scrivere un programma che stampi i primi
100 numeri a partire da 1, andando a
capo dopo ogni decina!
9 Possibili soluzioni!
1. for (int i = 1; i <= 100; i++)!
! !cout << i << “ ”;!
2. for (int i = 1; i <= 100; i++)!
! !cout << i*2 << “ ”;!
3. for (int i = 1; i <= 100; i++){
!cout << i << “ ”;
!if (i%10 == 0)
! !cout << “\n”;
}!
!
10