Function that we want to write:
Write a C function isPrime(n) that:
(1) returns true (= 1) if the input n is a prime number
(2) returns false (= 0) otherwise
|
Start with a skeleton isPrime( ) function
int isPrime(int n) { int nIsPrime; // int used as a boolean nIsPrime = 1; // 1 = True for ( int i = 2; i < x; i++ ) { if ( n%i == 0 ) { nIsPrime = 0; // n is not prime break; } } return (nIsPrime ? 1 : 0); } |
Initially, we assume that n is a prime number:
int isPrime(int n)
{
int nIsPrime; // int variable used as a boolean
nIsPrime = 1; // 1 = True
for ( int i = 2; i < x; i++ )
{
if ( n%i == 0 )
{
nIsPrime = 0; // n is not prime
break;
}
}
return (nIsPrime ? 1 : 0);
}
|
Check every possible divisor between 2 and n:
int isPrime(int n) { int nIsPrime; // int variable used as a boolean nIsPrime = 1; // 1 = True for ( int i = 2; i < n; i++ ) { if ( n%i == 0 ) { nIsPrime = 0; // n is not prime break; } } return (nIsPrime ? 1 : 0); } |
If some i is a dvisor of x, then it is not a prime number and we can exit the loop:
int isPrime(int n) { int nIsPrime; // int variable used as a boolean nIsPrime = 1; // 1 = True for ( int i = 2; i < n; i++ ) { if ( n%i == 0 ) { nIsPrime = 0; // n is not prime break; } } return (nIsPrime ? 1 : 0); } |
Finally: return the value of nIsPrime:
int isPrime(int n) { int nIsPrime; // int variable used as a boolean nIsPrime = 1; // 1 = True for ( int i = 2; i < n; i++ ) { if ( n%i == 0 ) { nIsPrime = 0; // n is not prime break; } } return nIsPrime; } |
DEMO: demo/C/set1/prime-func.c