Теорема Вильсона в C++, неверный вывод?

Я написал функцию, которая должна проверять, является ли целое число простым, используя теорему Вильсона. Однако это выводит, что 5 не простое число, которое очевидно. Я хочу спросить, почему это?

#include <iostream>
using namespace std;
long int counter = 1;
bool primeWilson(int n)
{
    for(int i=1; i<n; i++)
    {
        counter*=i;
    }
    if(n%(counter+1)!=0)
    {
        return true;
    }
    return false;
}

1 ответ

Вы проверяете неправильный способ реализации Wilson. Например:

25 делится на 5
но
5 не делится на 25

n%(counter+1)

->

(counter+1)%n
Другие вопросы по тегам