C program to print first 10 prime numbers

C program to print first 10 prime numbers


Output:

The first 10 prime numbers are:

2 3 5 7 11 13 17 19 23 29

Implementation:


/* This method uses the "sieve of erasthothenes algorithm"
   An algorithm to print largest prime numbers 
   */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <limits.h>
#define MAX 1000000

/* Initially setting values of all the hash indices to zero */
int hash[MAX]={0};

/* setting the multiples of n to 1 
   inorder to consider those numbers as non-prime numbers 
   */
void sethash(int n)
{
 int i;
 for(i=1;i*n<MAX;i++)
 {
  if(hash[i*n]==0)
  {
   hash[i*n]=1;
  }
 }
}

int main(void) {
 
 /* set the value of n according to your number of prime numbers to print */
 int n=10;
 int i;
 int count=0;
 printf("The first 10 prime numbers are:\n");
 for(i=2;i<MAX;i++)
 {
  
  /* if the value's hash index is not set,
     it is a prime number
     then, set all the multiples of that number as non-prime number using sethash() function
     */
  if(hash[i]==0)
  {
   
   /* if we already reached n prime numbers, 
      we can stop finding & printing prime numbers 
      */
   count++;
   printf("%d ",i);
   
   if(count==n)
   {
    break;
   }
   sethash(i);
  }
 }
 return 0;
}