## DEV Community is a community of 871,998 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Cesar Del rio

Posted on • Updated on

# #3 - Wilson primes CodeWars Kata (8 kyu)

Instructions:
Wilson primes satisfy the following condition. Let P represent a prime number.

Then ((P-1)! + 1) / (P * P) should give a whole number.

Your task is to create a function that returns true if the given number is a Wilson prime.

My solution:

``````function amIWilson(p) {
const factorial = (n)=>{
if (n < 0) return -1
if (n === 0) return 1

return n * factorial(n - 1)
}

if( ((factorial(p-1) + 1) % (p * p)) == 0) return true

return false
}
``````

Explanation
The Kata instructions say that a Wilson Prime is a number in which the result of the factorial of p-1 + 1 divided by p*p is an integer.

So first I started making a function that gets the factorial of p-1, in which I used recursive code using 2 conditionals at the beggining of the function if the passed numer is equal to zero or if it is less than zero, so it doesn't end on an infinite loop and then I recalled the same function until n equals 0.
Then I passed the formula of the Wilson Primes to a conditional with the modulus operator so it returns the reminder of the division and if the reminder is 0 it means that it is an integer and the result should be true, if the condition is false then it isn't a Wilson Prime and it'll return false