Zadanie zaliczeniowe z laboratorium Pascala i C. ZSI I. 04/05 ------------------------------------------------------------- Zadane: 27.04.2005, odbiór: 4.05.2005, 0 punktów. Zad 11c. (0 pkt) (C) ------------------- Napisz w C program, który wczyta od użytkownika liczbę całkowitą N (większą od 1) i wypisze wszystkie liczby pierwsze z zakresu 1..N, na końcu zaś poda liczbę wypisanych liczb pierwszych. Rozwiąż to zadanie stosując algorytm sita Eratostenesa. Koniecznie zastosuj w swoim rozwiązaniu funkcje - poza oczywistą funkcją main. Rozszerzenie: ========== Główną część algorytmu (wykreślanie liczb złożonych z tablicy i wypisywanie liczb pierwszych) zapisz w dwu postaciach: - najpierw używając składni tablicowej, - potem przepisz pierwszą wersję używając składni wskaźnikowej. Uwaga: ====== - programy nie kompilujące się kompilatorami języka C _nie_ będą sprawdzane, niezależnie od tego czy kompilują się kompilatormai C++ (dotyczy to _także_ komentarzy //, których nie ma w C), - pamiętaj że pliki źródłowe w C mają rozszerzenie .c (a nie .cpp), użycie innego rozszerzenie może spowodować wywołanie kompilatora C++ a nie C, - użyj dynamicznej tablicy do pamiętania sita, - pamietaj o zwolnieniu pamięci, - pamiętaj o włączeniu _wszelkich_ dostępnych ostrzeżeń kompilatora. Algorytm Sita Eratostenesa: =========================== Działanie tego algorytmu jest następujące: - tworzymy zbiór wszystkich liczb z przedziału 2..k (można utworzyć zbiór wszystkich liczb z przedziału 0..n), - po kolei sprawdzamy wszystkie liczby z przedziału 2..k: - jeśli nie należą do zbioru to je pomijamy, - jeśli należą, to je wypisujemy i usuwamy ze zbioru ich wszystkie wielokrotności. Uwaga: powyższy algorytm można zmodyfikować tak by był nieco efektywniejszy - przeanalizujemy to na laboratorium.