Практикум по среде и языку QBasic ___ __ 143

своено переменной lsprime% перед самым выходом из подпрограммы. Таблица простых чисел в создается вызывающей программой и должна быть объявлена в ней как доступная подпрограмме.

Теперь при помощи диалогового окна, вызываемого через SUBS из меню view, вернемся к редактированию основной программы и введем следующий текст:

DIM SHARED B(1 TO 16384) AS LONG

'общая таблица простых чисел CLS 'очистка экрана В(1) = 2: В(2) = 3 'два первых простых числа JS = 3 'проверенное число Кб = 3 'номер следующего простого числа DO 'начало цикла перебора чисел J& = J& + 2 'проверяются нечетные числа IF IsPrime%(J&) > О THEN

'проверка числа подпрограммой IF Кб < 16385 THEN В(К&) = J&

'запись в пределах размера массива

PRINT KS, J& 'вывод номера и простого числа KS = Кб + 1 'следующий номер END IF LOOP WHILE K& < 16385 'конец цикла перебора чисел

После ввода текста вы можете убедиться, что строка

DECLARE FUNCTION IsPrime%(AS)

введена в основную программу автоматически.

Обратите внимание на то, что подпрограмма-функция используется для вычисления значения и в данном случае это значение подставлено в условный оператор.

В основной программе сначала в таблицу простых чисел заносятся два значения, затем идет цикл перебора нечетных чисел (еще один способ повышения эффективности) с условием окончания по количеству простых чисел. Размер таблицы простых чисел, используемых в качестве делителей, выбран таким образом, чтобы она поместилась в одном сегменте ОЗУ (64 килобайта). Запись в таблицу ограничивается по значению номера 16384.

Для проверки правильности программы подставьте в условие конца цикла число 20 и после запуска проверьте полученные значения на соответствие простым числам. В случае соответствия очень вероятно, что программа работает правильно. Тогда сохраните ее в файле PRIMES . ВАЗ.

Затем вернитесь к указанной в тексте границе и запустите программу снова. На этот раз ждать окончания ее работы придется ждать гораздо дольше (особенно тем, у кого еще слабосильные 286 или 386 процессоры). В последней выведенной строке вы увидите последнее простое число в таблице равное 180503. Это означает, что полученная таблица пригодна для проверки примерно 32 миллиардов чисел натурального ряда, то есть предложенная программа казалось бы может вычислить все простые числа типа LONG.