Prime Numbers: A Computational Approach
I've improved the function that checks if a number is a prime number. Here's the new code:
/*
* Check if "number" is a prime number. If it is, the function will return 1.
* If it isn't, it will return 0.
*
*/
int isPrime(long long unsigned number)
{
if(number == 2)
{
return 1;
}
else if(number % 2 == 0)
{
return 0;
}
long long unsigned aux;
for(aux = 3; aux*aux <= number; aux+=2)
{
if(number % aux == 0)
{
return 0;
}
}
return 1;
}
The key is the double increment in the for-loop (aux+=2). Apart from 2, all prime numbers are odd numbers. The first thing I do, is check if a prime number is 2. Secondly, I discard the possibility that the number is divisible by 2. Finally, I proceed with the algorithm the same way I did in the first program, but this time I start checking if the number can be divided by 3. And then, I can safely increment the number two units on each iteration (if 2 cannot divide a number, a number that can be divided by 2 won't be able to divide that number either).
This screencaptures (it's about the Unix time command again) show this improvement. I calculate primes up to 10000000 this time.
Old version |
New version |
You can download the source code with the improved function here.
No comments:
Post a Comment