Wilson’s Theorem states that a natural number is p > 1 is a prime number if only if the below condition is met.
(p - 1) ! ≡ -1 mod p
OR (p - 1) ! ≡ (p-1) mod p
For example, Take p as 4
(4 – 1)! = 3 ! => 3 * 2 * 1 = 6
(6 % 4) != 3 => 6 not equals to 3
So p is not a prime number.
Take p as 5
(5-1)! = 4 ! => 4*3*2*1 = 24
24%5 == 4
4 == 4
So p is a prime number.
Refer the below code to know how to do with a java program.
import java.util.Scanner;
public class PrimeFInder {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
System.out.println("The entered number is "+number);
// (p - 1) ! ≡ (p-1) mod p
int lhs = getFactorialValue(number- 1) % number;
int rhs = number - 1;
if(lhs == rhs){
System.out.println("Its a prime number");
}else{
System.out.println("Its an non prime number");
}
}
private static int getFactorialValue(int n) {
int value = 1;
for (int i = 1; i <= n; i++) {
value *= i;
}
return value;
}
}
The output is given below,
12
The entered number is 12
Its an non prime number