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
Top comments (0)