Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
'findNextHighestPrime
'-----------------------------------------------------------
Public Sub findNextHighestPrime_Async
Dim threadStart As System.Threading.ThreadStart
threadStart = _
New System.Threading.ThreadStart(AddressOf _
findNextHighestPrime)
Dim newThread As System.Threading.Thread
newThread = New System.Threading.Thread(threadStart)
'Состояние
должно отвечать, что поиск продолжается
setProcessingState(ProcessingState.waitingToStartAsync)
newThread.Start
End Sub
'-------------------------------------------------------------
'Основной рабочий поток. Этот поток запускает поиск очередного
'простого числа и выполняется до тех пор, пока не произойдет
'одно из следующих двух событий:
' (а) найдено очередное простое число
' (b) от внешнего (по отношению к данному) потока поступила
' команда прекратить выполнение
'--------------------------------------------------------------
Public Sub findNextHighestPrime
'Если поступила команда прекратить выполнение, то поиск даже
'не должен начинаться
If (m_processingState = ProcessingState.requestAbort) Then
GoTo finished_looking
End If
'Состояние должно отвечать, что поиск продолжается
setProcessingState(ProcessingState.lookingForPrime)
Dim currentItem As Long
'Проверить, является ли число нечетным
If ((m_startPoint And 1) = 1) Then
'Число является нечетным, начать поиск со следующего нечетного числа
currentItem = m_startPoint + 2
Else
'Число является четным, начать поиск со следующего нечетного числа
currentItem = m_startPoint + 1
End If
'Приступить к поиску простого числа
While (m_processingState = ProcessingState.lookingForPrime)
'B случае нахождения простого числа, возвратить его
If (isItemPrime(currentItem) = True) Then
m_NextHighestPrime = currentItem
'Обновить состояние
setProcessingState(ProcessingState.foundPrime)
End If
currentItem = currentItem + 2
End While
finished_looking:
'Выход.
К этому моменту либо от другого потока поступила
'команда прекратить поиск, либо было найдено и записано
'следующее наибольшее простое число
'Если поступил запрос прекратить выполнение,
'сообщить, что выполнение процесса прекращено
If (m_processingState = ProcessingState.requestAbort) Then
setProcessingState(ProcessingState.aborted)
End If
End Sub
'Вспомогательная функция, которая проверяет, является
'ли число простым
Private Function isItemPrime(ByVal potentialPrime _
As Long) As Boolean
'Если число - четное, значит, оно не является простым
If ((potentialPrime And 1) = 0) Then
Return False
End If
'Продолжать поиск до тех пор, пока не будет превышено значение
'квадратного корня из числа
Dim end_point_of_search As Long end_point_of_search = _
CLng(System.Math.Sqrt(potentialPrime)) + 1
Dim current_test_item As Long = 3
While (current_test_item <= end_point_of_search)
'---------------------------------------------------------
'Проверить, не поступила ли команда прекратить выполнение!
'---------------------------------------------------------
If (m_processingState <> ProcessingState.lookingForPrime) Then
Return False
End If
'Если число делится без остатка,
'значит, оно не является простым
If (potentialPrime Mod current_test_item = 0) Then
Return False
End If
'Увеличить число на два
current_test_item = current test_item + 2
'-------------------------------------
'Увеличить число проверенных элементов
'-------------------------------------
Поделиться:
Популярные книги
Возрождение Феникса. Том 2
2. Возрождение Феникса
Фантастика:
фэнтези
попаданцы
альтернативная история
6.92
рейтинг книги
Вперед в прошлое 3
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сумеречный Стрелок 4
4. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Аномалия
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Диверсант
2. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Кодекс Охотника. Книга XVI
16. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Дело Чести
5. Жизни Архимага
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Граф
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Я Гордый часть 2
2. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Начальник милиции 2
2. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Авиатор: назад в СССР 10
10. Покоряя небо
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: Назад в СССР 11
11. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Адепт. Том 1. Обучение
6. Совсем не герой
Фантастика:
фэнтези
9.27