home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 December
/
simtel1292_SIMTEL_1292_Walnut_Creek.iso
/
msdos
/
c
/
cnews013.arc
/
PRIME.C
< prev
next >
Wrap
Text File
|
1988-12-09
|
2KB
|
69 lines
/* Diana Sysinger
C Programming
Extra Credit */
/* Division by subtraction with error checking */
#include <stdio.h>
#include "myname.c"
int limit, num;
static int count;
void getlim(void); /* gets upper limit from user, must be greater than 2 */
void prime(void); /* finds the prime numbers between 2 and the limit */
/* calls prtit to do the output */
void prtit(int); /* formats the output, 10 numbers per line */
void main(void);
void main(void)
{
myname;
getlim();
prime();
fprintf(stdprn,"\n\nThere are %d primes from 2 to %d.\n\n", count, limit);
}
void getlim(void)
{ extern int limit;
printf("\n\nPlease enter the upper Limit for the prime search.\n");
printf("The Limit should be 2 or larger.\n");
scanf("%d", &limit);
if (limit < 2) {
printf("\n\nOops! Limit must be 2 or larger!");
printf("\nTry again.\n");
getch();
getlim();
}
else
fprintf(stdprn,"\nHere come the primes!\n\n");
}
void prime(void)
{
int div = 2;
extern int limit, num;
for (num = 2; num <= limit; num++) { /* do until limit reached */
for ( div = 2; num >= div * div ; div++) /* compare to square of divisor */
if (num % div * div == 0) /* if num/square = 0 then num */
break; /* not a prime number - do loop */
for ( ; num % div != 0; div++) /* if num/div = zero then check */
; /* for prime condition */
if (div == num) /* if div = num then num is a */
prtit(num); /* prime so print it out */
}
}
void prtit(int num)
{ extern int count;
fprintf(stdprn,"%5d", num); /* print the numbers 10 to a */
if ( ++count % 10 == 0 ) /* line. */
fprintf(stdprn,"\n");
}