//--------------------------------------------------------------------------- // ННГУ, ВМК, Курс "Методы программирования-2", С++, ООП // // Copyright (c) Гергель В.П. 05.10.2001 // // Тестирование множества #pragma hdrstop #include#include #include "bitfield.cpp" #include "set.cpp" //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { int n, m, k, count; cout << "Тестирование программ поддержки понятия множества" << endl; cout << " Решето Эратосфена" << endl; cout << "Введите верхнюю границу целых значений - "; cin >> n; TSet s(n+1); // заполнение множества for ( m=2; m<=n; m++ ) s.InsElem(m); // проверка до sqrt(n) и удаление кратных for ( m=2; m*m<=n; m++ ) // если м в s, удаление кратных if ( s.IsMember(m) ) for ( k=2*m; k<=n; k+=m ) if ( s.IsMember(k) ) s.DelElem(k); // оставшиеся в s элементы - простые числа cout << "Печать простых чисел" << endl; count = 0; k = 1; for ( m=2; m<=n; m++ ) if ( s.IsMember(m) ) { count++; cout << setw(3) << m << " "; if ( k++ % 10 == 0 ) cout << endl; } cout << endl; cout << "В первых " << n << " числах " << count << " простых" << endl; getch(); return 0; } //---------------------------------------------------------------------------