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

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

Жанры

Программирование мобильных устройств на платформе .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;

}

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

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

Адепт. Том второй. Каникулы

Бубела Олег Николаевич
7. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.05
рейтинг книги
Адепт. Том второй. Каникулы

Звездная Кровь. Экзарх III

Рокотов Алексей
3. Экзарх
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Экзарх III

Эпоха Опустошителя. Том II

Павлов Вел
2. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том II

И в аду есть герои

Панов Вадим Юрьевич
5. Тайный Город
Фантастика:
боевая фантастика
9.19
рейтинг книги
И в аду есть герои

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Курс 1. Сентябрь

Фокс Гарри
1. Маркатис
Фантастика:
аниме
фэнтези
сказочная фантастика
5.00
рейтинг книги
Курс 1. Сентябрь

Проклятый Лекарь. Том 2

Молотов Виктор
2. Анатомия Тьмы
Фантастика:
фэнтези
попаданцы
7.00
рейтинг книги
Проклятый Лекарь. Том 2

Я еще князь. Книга XX

Дрейк Сириус
20. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще князь. Книга XX

Инженер Петра Великого 4

Гросов Виктор
4. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Инженер Петра Великого 4

Железное пламя

Яррос Ребекка
Фантастика:
фэнтези
5.00
рейтинг книги
Железное пламя

Отверженный. Дилогия

Опсокополос Алексис
Отверженный
Фантастика:
фэнтези
7.51
рейтинг книги
Отверженный. Дилогия

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

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

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

Сапфир Олег
26. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 26

Моров. Том 8

Кощеев Владимир
7. Моров
Фантастика:
альтернативная история
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Моров. Том 8