IHYPRESS.NET > C PROGRAMMING
HOME | CLASSIC ASP | C | HTML/CSS | JAVASCRIPT | PERL | PHP | PYTHON | RUBY
C > 06. Functions II (Pointers) [PROGRAM #03]
CODERESULT
<
/* Problem: Write a function that determines if a number 
is prime or not. The function must return 1 if prime, 0 if not. 
In addition, the function must "return" the value of one 
of the divisors. */

#include <stdio.h>
#include <math.h>

/* function returns true if n is even.  */ 
/* it returns false if n is odd         */
int
even (int n)
{
	return (!(n%2));
}


/* function returns true if n is prime, 
the pointer variable references the divisor value */
int
prime2 (int n, int *divisor)
{	
	int i, is_prime;
	
	/* looking for a divisor. if found, it 
		is not a prime number */
	*divisor = 0;

	/* eliminating even numbers except 2 */
	if (even (n))
	{
		if (n==2)
			*divisor=0;
		else
			*divisor=2;
	}
	else
	{
		if (n==1)
			*divisor=0; /* 1 is a prime number */
		else
			/* trying to divide number by 3,5,7,... */
			/* to find a divisor until sqrt(n)      */
			for (i=3; i<=sqrt(n); i=i+2)
			{
				if (!(n%i))
					*divisor=i;
			}
	}
	
	is_prime = *divisor;

	/* if there is a divisor then NOT prime */

	return (!is_prime);
}

int
main (void)
{
int x, div;

   printf ("Enter a positive integer number: ");
   scanf ("%d", &x);

   /*  testing for prime and printing the report */
   if (prime2 (x, &div))
      printf ("%d is a prime number.\n", x);
   else
      printf ("%d not prime number. Divisible by %d.\n", x, div);

return (0);
}
Legend: preprocessor directives | variable declarations main function | helper functions | user-defined structures comments
Enter a positive integer number: 77
77 not prime number. Divisible by 7.
>
COPYRIGHT © 2021 IHYPRESS.NET. A DIVISION OF IHY PRESS, KIRKLAND, WA 98083 USA. ALL RIGHTS RESERVED.