оках 105 string sieveChars:

Автор admin Воскресенье, 10 мая 2009 11:32

оках 105 string sieveChars: public: // Создание строки длиной 50 и заполнение ее символов // значениями “Р” (сокращение от Prime, то есть “простое число”) SieveTestO : sieveChars(50. “Р”) {} void run() { fi ndPrimesO: testPrimesO: } bool isPrime(int p) { if (p = 0 || p -= 1) return false: int root – int(sqrt(double(p))): for (int i = 2; i <= root: ++i) if (p % i ==0) return false: return true: } void findPrimesO { // По определению числа 0 и 1 не являются простыми. // Заменяем зти элементы символами “N”. sieveChars.replасе(0, 2. “NN”); // Перебор массива: size_t sieveSize – sieveChars.sizeO: int root = int(sqrt(double(sieveSize))): for (int i =2: i <- root: ++i) // Поиск всех кратных чисел: for (size_t factor – 2: factor * i < sieveSize; ++factor) sieveChars[factor * i] = ‘N’; } void testPrimesO { size_t i – sieveChars.find(‘P’); while (i != string::npos) { test_(isPrime(i++)); i – sieveChars.find(‘P’. i); } i – sieveChars.find_first_not_of(‘P’): while (i != string::npos) { test_(!isPrime(i++)): i – sieveChars.find_first_not_of(‘P’. i); } } }: lendif // SIEVE_H ///:- II: C03:Sieve.cpp //{L} ../TestSui


Комментарии закрыты.