I am trying to write a prime number function in C# and I am wondering if the follow code will work. It “appears” to work with the first 50 numbers or so. I just want to make sure it will work no matter how big the number is:
static bool IsPrime(int number)
{
if ((number == 2) || (number == 3) || (number == 5) || (number == 7) || (number == 9))
return true;
if ((number % 2 != 0) && (number % 3 != 0) && (number % 5 != 0) &&
(number % 7 != 0) && (number % 9 != 0) && (number % 4 != 0) &&
(number % 6 != 0))
return true;
return false;
}
No it won’t work! Try
121 = 11 * 11for example which obviously isn’t a prime.For any number given to your function, that is a product of the prime numbers
X1, X2, ..., Xn(where n >= 2) with all of them being greater or equal to 11, your function will return true. (And also, as already said, 9 isn’t a prime).From wikipedia you can see that:
so a very simple and naive algorithm on checking whether a number is prime could be:
For better algorithms check here: Primality Test
If you want to check your code, do inlcude a test, here’s a test case written in xunit.