Составители:
Рубрика:
простые числа уже имелись) проверять кандидатов нужно в воз-
растающем порядке. Возможна приостановка рабочего процесса в
ожидании, что другой процесс сгенерирует м´еньшее простое число,
но взаимная блокировка исключается.
Генерация простых чисел на языке C-Linda
РАБОЧИЙ ПРОЦЕСС
# include "linda.h"
# define LIMIT 1000
/* верхняя граница числа простых чисел */
void worker() { /* функция без параметров */
int primes[LIMIT]={2,3} /* таблица простых чисел */
int numPrimes=1, i, candidate, isprime;
/* numPrimes - номер очередного простого числа */
/* циклическое получение кандидатов и их проверка */
while(true) {
if(RDP("stop"))
/* проверка завершения: появился ли
в пространстве кортежей "stop" */
return; /* выход из функции */
IN("candidate", ?candidate); /* получить кандидата */
OUT("candidate", candidate+2);
/* вывод следующего нечетного в качестве
кандидата погружаем в ПК */
i=0; isprime=1;
while(primes[i]*primes[i]<=candidate) {
/* далее нет необходимости проверять
ибо на остальные числа делится не может */
if(candidate%primes[i]==0){
isprime=0; break;
}
i++;
if(i>numPrimes) { /* требуется следующее простое */
numPrimes++;
RD("prime", numPrimes, ?primes[numPrimes]);
}
}
68
Страницы
- « первая
- ‹ предыдущая
- …
- 65
- 66
- 67
- 68
- 69
- …
- следующая ›
- последняя »
