Написал программу для нахождения простых чисел. (Простые числа это такие числа которые делятся без остатка только на 1 и на само себя). Эти числа можно найти только полным перебором. Закономерность ищё не найдена.
code_1026
Если искать числа например от 1 до 10000, то программа загружает процессор на 100% около 1 минуты. Во время выполнения окно программы как бы зависает. Тоесть если двинуть мышкой, или переташить, свернуть, развернуть окно программы оно не подаёт никаких "признаков жизни" пока не кончится перебор чисел.
Давайте подумаем как исправить такое зависание. Если мне не изменяет память, на visual basic есть такая функция, которая при каждой итерации цикла проверяет были ли сделаны изменения (сдвинута мышка, изменилось окошко программы) и если они были сделаны, то не начинает новый такт цикла пока не "перерисуется" окно программы.
Этот топик читают: Гость
Ответов: 176
Рейтинг: 12
|
|||
карма: 0 |
| ||
файлы: 1 | code_1026.txt [2.9KB] [268] |
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
toropchin, попробуй вот так с системным потоком code_1027
|
|||
карма: 22 |
| ||
файлы: 1 | code_1027.txt [2.9KB] [443] |
Ответов: 176
Рейтинг: 12
|
|||
Отлично! Спасибо. Я до сих пор понять не мог для чего применять этот компонент параллельного потока
|
|||
карма: 0 |
|
Ответов: 9906
Рейтинг: 351
|
|||
toropchin,
1) белые люди проверяют делимость не на все что ни поподя, а только среди простых чисел, найденные ДО этого, и не больше корня из тестируемого числа. 2) проверка на делимость - это просто равество нулю остатка X mod Y |
|||
карма: 9 |
|
Ответов: 2125
Рейтинг: 159
|
|||
toropchin писал(а): Если искать числа например от 1 до 10000Для таких маленьких чисел и современных объёмов памяти, решето Эратосфена - самое то. Учитывая, что вычёркивать нужно будет около 40 раз, думаю, за пару секунд уложится [size=-2]------ Добавлено в 23:33 Меньше 2-х секунд даже на PII-400 code_1028 [size=-2]------ Добавлено в 23:43 Даже до 1000000 всего 14 секунд [size=-2]------ Добавлено в 23:52 10 000 000 - 4 с половиной минуты Правда, большую часть времени заполнялся ListBox |
|||
карма: 1 |
| ||
файлы: 1 | code_1028.txt [1.3KB] [313] |
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
tsdima, а единица куда пропала?
|
|||
карма: 22 |
|
Ответов: 8928
Рейтинг: 823
|
|||
nesco, а единица вычеркнулась
|
|||
карма: 19 |
|
Ответов: 2125
Рейтинг: 159
|
|||
nesco, там и двойка выводится отдельно
|
|||
карма: 1 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
tsdima, а вот так при 10 000 000 в два раза быстрее code_1029
|
|||
карма: 22 |
| ||
файлы: 1 | code_1029.txt [1.5KB] [447] |
Ответов: 2125
Рейтинг: 159
|
|||
nesco, на однопроцессорной машине (и без HyperThreading) - на 17% дольше. Конфигурацию компа огласите Как пить дать - двух-ядерный проц.
|
|||
карма: 1 |
|
10