Seventh Week Examples:
Testing for Prime Numbers.
Factoring
Following D. Milicic Eighth
Week Examples.
Checking primality
The first program is inefficient.
/**********************************************************************
A. Treibergs 2-9-6
Silly prime checking
prime1.c
**********************************************************************/
# include <stdio.h>
# include <stdlib.h>
int
main(void)
{
int n, p;
printf("Prime Checking\n\n Input an integer bigger than 1 : ");
scanf("%d",&n);
p = 2;
while(p < n)
{
if (n % p == 0)
{
break;
}
else
p = p+1;
}
if (p == n)
printf(" %d is prime!\n",n);
else
printf(" %d is not prime!\n",n);
return EXIT_SUCCESS;
}
Checking primality 2
A better program. The loop continues to the square root of the number only, this time.
/**********************************************************************
A. Treibergs 2-9-6
Better prime checking
prime2.c
**********************************************************************/
# include <stdio.h>
# include <stdlib.h>
int
main ( void )
{
int n, p, flag;
printf ( "Input an integer bigger than 1 : ");
scanf ( "%d", &n );
flag = 0;
p = 2;
while ( p*p <= n )
{
if (n % p == 0)
{
flag = 1;
break;
}
else
p = p+1;
}
if (flag == 0)
printf("%d is prime!\n",n);
else
printf("%d is not prime!\n",n);
return EXIT_SUCCESS;
}
Factorization
/**********************************************************************
A. Treibergs 2-9-6
factoring a number
factor.c
**********************************************************************/
# include <stdio.h>
# include <stdlib.h>
int
factor ( int n )
{
int p;
p=2;
while ( p*p <= n )
{
if ( n % p == 0)
return(p);
p=p+1;
}
return(n);
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
int
main(void)
{
int n, fact;
printf ( "Input a number : " );
scanf ( "%d", &n );
printf("Prime factors of %d are: ",n);
do
{
fact = factor(n);
printf("%d ",fact);
n = n/fact;
}
while(n != 1);
printf("\n");
return EXIT_SUCCESS;
}