//---------------------------------------------------------------------------
// ННГУ, ВМК, Курс "Методы программирования-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;
}
//---------------------------------------------------------------------------
Хостинг от uCoz