Тест на примитивность CRCW PRAM - PullRequest
0 голосов
/ 17 октября 2019

Я имею в виду тест на простоту, реализованный в модели CRCW PRAM. Вот что мне удалось:

n // input number

result = n > 1;

for i=2...sqrt(n); i+=6
{
    do parallel
    {
        if (((n<=3) and (n<=1)) || (((n%2==0) or (n%3==0))))
        {
            result = false;
        }
        else if ((n % i == 0) or (n%(i+2)) == 0)
        {
            result = false;
        }
    }
}

Причина result = n > 1; состоит в том, чтобы предотвратить проверку отрицательного числа. for цикл делает работу покоя.

Мои вопросы:

  1. Я знаю, что в модели CRCW PRAM мне нужно записать одно и то же значение в ячейку памяти. Но имеет ли значение, если часть кода не параллельна? Я имею в виду n > 1; может быть true или false. Отклоняет ли это мое решение?

  2. Можно ли использовать +=6 для цикла?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...