Zadanie zaliczeniowe z laboratorium Pascala i C. ZSI I. 04/05 ------------------------------------------------------------- Zadane: 27.04.2005, odbior: 4.05.2005, 0 punktow. Zad 11c. (0 pkt) (C) ------------------- Napisz w C program, ktory wczyta od uzytkownika liczbe calkowita N (wieksza od 1) i wypisze wszystkie liczby pierwsze z zakresu 1..N, na koncu zas poda liczbe wypisanych liczb pierwszych. Rozwiaz to zadanie stosujac algorytm sita Eratostenesa. Koniecznie zastosuj w swoim rozwiazaniu funkcje - poza oczywista funkcja main. Rozszerzenie: ========== Glowna czesc algorytmu (wykreslanie liczb zlozonych z tablicy i wypisywanie liczb pierwszych) zapisz w dwu postaciach: - najpierw uzywajac skladni tablicowej, - potem przepisz pierwsza wersje uzywajac skladni wskaznikowej. Uwaga: ====== - programy nie kompilujace sie kompilatorami jezyka C _nie_ beda sprawdzane, niezaleznie od tego czy kompiluja sie kompilatormai C++ (dotyczy to _takze_ komentarzy //, ktorych nie ma w C), - pamietaj ze pliki zrodlowe w C maja rozszerzenie .c (a nie .cpp), uzycie innego rozszerzenie moze spowodowac wywolanie kompilatora C++ a nie C, - uzyj dynamicznej tablicy do pamietania sita, - pamietaj o zwolnieniu pamieci, - pamietaj o wlaczeniu _wszelkich_ dostepnych ostrzezen kompilatora. Algorytm Sita Eratostenesa: =========================== Dzialanie tego algorytmu jest nastepujace: - tworzymy zbior wszystkich liczb z przedzialu 2..k (mozna utworzyc zbior wszystkich liczb z przedzialu 0..n), - po kolei sprawdzamy wszystkie liczby z przedzialu 2..k: - jesli nie naleza do zbioru to je pomijamy, - jesli naleza, to je wypisujemy i usuwamy ze zbioru ich wszystkie wielokrotnosci. Uwaga: powyzszy algorytm mozna zmodyfikowac tak by byl nieco efektywniejszy - przeanalizujemy to na laboratorium.