/* ECP: FILEname=fig4_1.c */ /* 1*/ #include /* 2*/ /* Return True Iff N Is Prime */ /* 3*/ int /* 4*/ IsPrime( unsigned long int N ) /* 5*/ { /* 6*/ unsigned long int Divisor; /* 7*/ if( N % 2 ) /* 8*/ for( Divisor = 3; N % Divisor; Divisor += 2 ) /* 9*/ if( Divisor * Divisor > N ) /*10*/ return 1; /*11*/ return N == 2 || N == 3; /*12*/ } /*13*/ /* Return An Odd Starting Number */ /*14*/ unsigned long int /*15*/ FirstTrial( void ) /*16*/ { /*17*/ unsigned long int StartingNum; /*18*/ printf( "Enter a starting number: " ); /*19*/ if( scanf( "%lu", &StartingNum ) == 1 ) /*20*/ return StartingNum % 2 ? StartingNum : ++StartingNum; /*21*/ printf( "Bad number entered\n" ); /*22*/ return 0; /*23*/ } /*24*/ /* Find Next Prime After Some Starting Point */ /*25*/ main( void ) /*26*/ { /*27*/ unsigned long int PossiblePrime = FirstTrial( ); /*28*/ for( ; !IsPrime( PossiblePrime ); PossiblePrime += 2 ) /*29*/ ; /*30*/ printf( "Next largest prime is %lu\n", PossiblePrime ); /*31*/ }