Laboratorio di calcolo I
AA 2008/09
Prova pratica 11/9/09


Create nell'account assegnatovi dal docente una cartella esame_cognome e svolgete li' la prova.

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 .c contenente la funzione inizialmente vuota (con solo un return 1;)
scrivere un file .c 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.