---++ Homework (compito per casa) 2 ---++ Crivello di Eratostene Vedi anche: DomandeHomework204, SoluzioneHomework204, RisultatiHomework204 ---- %TOC% ---- ---+++ Descrizione I *numeri primi* si definiscono in matematica come quei numeri naturali che sono divisibili solo per 1 e per se stessi. Esiste un antichissimo metodo (forse uno dei primi algoritmi di cui si abbia conoscenza) per generare tutti i numeri primi da 1 ad N, noto come *Crivello di Eratostene*, che risale al III secolo avanti Cristo: si scrivono tutti i numeri naturali da uno a N. Si comincia da 2 e si cancellano tutti i suoi multipli (4,6,8,10, ...). Si prende il prossimo numero non cancellato, il 3, e si cancellano tutti i suoi multipli (6,9,12,15, ...). A questo punto il primo numero non cancellato è il 5 e si cancellano i suoi multipli, e cosi' via. Alla fine, seguendo questo procedimento, i numeri non cancellati sono tutti i numeri primi tra 1 e N. (quando ci si può fermare in realtà?). Voi dovrete semplicemente scrivere un programma che: * genera tutti i numeri primi da 1 a 10000 [SUGG: usare un array, inizializzare tutti i suoi elementi a 1; poi applicare l'algortimo di Eratostene, dove cancellare il numero i, significa porre a 0 l'iesimo elemento dell'array]; * accetta in input un'intero positivo e si comporta nel seguente modo: * se l'intero è 0 si ferma; * se l'intero è compreso tra 1 e 10000, stampa 1 se il numero è primo, 0 altrimenti e poi aspetta in input un nuovo numero; * se l'intero è negativo o strettamente maggiore di 10000, stampa -1 e poi chiede in input un nuovo numero. *IMPORTANTE* * non far produrre al programma altri output oltre a quelli richiesti. * inserire l'istruzione: Ecco una tabella dei numeri primi da 1 a 100 che potrebbe esservi utile per testare il programma: <pre style='background:lightgrey'> 1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 </pre> ---++++ Input Il vostro programma riceve in input una sequenza di numeri interi chiusa da uno zero; ---++++ Output Il vostro programma deve stampare 1 se il numero inserito è positivo e primo, 0 se è positivo e composto, -1 se il numero inserito è negativo o strettamente maggiore di 10000 e continuare a chiedere un nuovo numero finchè non viene inserito uno 0. __%RED%Attenzione%FINE%__ NON producete nessuna altra scritta oltre i numeri, altrimenti il test automatico del vostro programma fallirà miseramente! :-( ---+++ Come compilare ed eseguire il programma * usate un editor per scrivere il testo del programma e salvatelo in formato *testo semplice* in un file con l'estensione *.c* (ad esempio di nome trexpuno.c) * NON usate Word, Openoffice, Kword, Abiword che introducono caratteri strani * compilate (e contemporaneamente linkate) il programma con il comando <pre style='background:lightgrey'> gcc -g -o eratostene eratostene.c </pre> * eseguite il programma scrivendo <pre style='background:lightgrey'> ./eratostene </pre> ---+++ Come consegnare il programma * Avete tempo fino a *%RED%Martedì 30 Novembre alle ore 23.59%FINE%* (ora sono le *%SERVERTIME{"$hou:$min del $day"}%*). * Consegnate *il testo del programma sorgente C* da voi scritto. Io lo compilerò e testerò. * Usate *esclusivamente* la <a href="/~prog1/consegna-Prog1.html">pagina di consegna</a>. Non verranno accettate spedizioni via email. * Set ALLOWTOPICCHANGE = Users.DocentiProg1Group -- Users.IvanoSalvo - 18 Nov 2004
This topic: Programmazione1/AA0506/PZ
>
WebHome
>
HomeWork204
Topic revision: r5 - 2004-11-23 - IvanoSalvo
Copyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback