Чтение онлайн

на главную - закладки

Жанры

Программирование мобильных устройств на платформе .NET Compact Framework

Салмре Иво

Шрифт:

(m_processingState == ProcessingState.foundPrime)) {

return;

}

//Разрешить изменение состояния

m_processingState = nextState;

 }

 public ProcessingState getProcessingState {

get {return m_processingState;}

 }

 //------------------------

 //Возвращает
простое число

 //------------------------

 public long getPrime {

if (m_processingState != ProcessingState.foundPrime) {

throw new Exception("простое число еще не найдено!");

}

return m_NextHighestPrime;

 }

 //Конструктор класса

 public FindNextPrimeNumber(long startPoint) {

setProcessingState(ProcessingState.notYetStarted);

m_startPoint = startPoint;

 }

 //-----------------------------------------------------------

 //Создает новый рабочий поток, который будет вызывать функцию

 // "findNextHighestPrime"

 //-----------------------------------------------------------

 public void findNextHighestPrime_Async {

System.Threading.ThreadStart threadStart;

threadStart = new System.Threading.ThreadStart(findNextHighestPrime);

System.Threading.Thread newThread;

newThread = new System.Threading.Thread(threadStart);

//Состояние должно отвечать, что поиск продолжается

setProcessingState(ProcessingState.waitingToStartAsync);

newThread.Start;

 }

 //-------------------------------------------------------------

 //Основной рабочий поток. Этот поток запускает поиск очередного

 //простого числа и выполняется до тех пор, пока не произойдет

 //одно из следующих двух событий:

 // (а) найдено очередное простое число

 // (b) от внешнего (по отношению к данному) потока поступила

 // команда прекратить выполнение

 //-------------------------------------------------------------

 public void findNextHighestPrime {

//Если
поступила команда прекратить выполнение, то поиск

//даже не должен начинаться

if (m_processingState == ProcessingState.requestAbort) {

goto finished_looking;

}

//Состояние должно отвечать, что поиск продолжается

setProcessingState(ProcessingState.lookingForPrime);

long currentItem;

//Проверить, является ли число нечетным

if ((m_startPoint & 1) == 1) {

//Число является нечетным, начать поиск со следующего нечетного числа

currentItem = m_startPoint + 2;

} else {

//Число является четным, начать поиск со следующего нечетного числа

currentItem = m_startPoint + 1;

}

//Приступить к поиску простого числа

while (m_processingState == ProcessingState.lookingForPrime) {

//B случае нахождения простого числа возвратить его

if (isItemPrime(currentItem) == true) {

m_NextHighestPrime = currentItem; //Обновить состояние

setProcessingState(ProcessingState.foundPrime);

}

currentItem = currentItem + 2;

}

finished_looking:

//Выход. К этому моменту либо от другого потока поступила

//команда прекратить поиск, либо было найдено и записано

//следующее наибольшее простое число

//Если поступил запрос прекратить выполнение,

//сообщить, что выполнение процесса прекращено

if (m_processingState == ProcessingState.requestAbort) {

setProcessingState(ProcessingState.aborted);

}

 }

 //Вспомогательная функция, которая проверяет, является

 //ли число простым

 private bool isItemPrime(long potentialPrime) {

//Если число — четное, значит, оно не является простым

if ((potentialPrime & 1) == 0) {

return false;

}

//Продолжать поиск до тех пор, пока не будет превышено

Поделиться:
Популярные книги

Свадьба по приказу, или Моя непокорная княжна

Чернованова Валерия Михайловна
Любовные романы:
любовно-фантастические романы
5.57
рейтинг книги
Свадьба по приказу, или Моя непокорная княжна

Сборник коротких эротических рассказов

Коллектив авторов
Любовные романы:
эро литература
love action
7.25
рейтинг книги
Сборник коротких эротических рассказов

Отец моего жениха

Салах Алайна
Любовные романы:
современные любовные романы
7.79
рейтинг книги
Отец моего жениха

Вадбольский

Никитин Юрий Александрович
1. Вадбольский
Фантастика:
попаданцы
5.00
рейтинг книги
Вадбольский

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

В зоне особого внимания

Иванов Дмитрий
12. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
В зоне особого внимания

Таня Гроттер и магический контрабас

Емец Дмитрий Александрович
1. Таня Гроттер
Фантастика:
фэнтези
8.52
рейтинг книги
Таня Гроттер и магический контрабас

Бастард Императора. Том 2

Орлов Андрей Юрьевич
2. Бастард Императора
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бастард Императора. Том 2

Кодекс Крови. Книга ХI

Борзых М.
11. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХI

Третий

INDIGO
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий

Возвышение Меркурия. Книга 16

Кронос Александр
16. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 16

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9

Потусторонний. Книга 1

Погуляй Юрий Александрович
1. Господин Артемьев
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Потусторонний. Книга 1