Laboratorio di calcolo I
AA 2010/11
Prova pratica dell'8/2/2011
Scrivere un programma che elenchi tutti i numeri primi compresi tra 1 e
un numero massimo scelto dall'utente.
Il programma dovra' invocare una funzione che accetti un argomento
intero k (che dovra' essere maggiore o uguale a 1) e che restituisca un
intero
che valga 1 per i numeri primi e zero per i non primi, secondo il
prototipo
int
numero_primo(int k);
Per ottimizzare il riconoscimento dei numeri primi potete implementare
l'algoritmo qui descritto o un altro di vostra scelta.
1. per controllare se k sia divisibile per un certo
numero intero n utilizzate l'operatore modulo (%).
Se n e' un divisore per k allora k%n, resto
della divisione tra gli interi k e n, sara' 0
2. provare a dividere k per 2, 3, 3+2, 3+2+2,
3+2+2+2 .... e fermatevi
- quando
trovate un buon divisore (k non e' primo), oppure
- quando il
divisore abbia superato il valore della radice quadrata di k (k e'
primo)
Suggerimenti:
scrivere un file .h con il prototipo della funzione
scrivere un file .cc contenente la funzione inizialmente vuota (con
solo un return 1;)
scrivere un file .cc contenente il programma main
nel main leggere il numero massimo scelto dall'utente e scrivere il
codice che per ogni numero chiami numero_primo, controlli il risultato
ed eventualmente stampi il numero, se e' primo
solo quando questa parte compila e gira (chiamando primi tutti i
numeri!) dedicatevi allo sviluppo dell'algoritmo da inserire nella
funzione.