c code:

#include <stdio.h>
#include <stdlib.h>
int printp(int*);
int print(int*);
int main (void)
{
    int *arr=NULL,*pi=NULL;
    int n,p,pv;
    int i=0;
    char a;
    printf("enter the number: "); scanf("%d", &n);
    // init mem
    pi = malloc(n*sizeof(int));
    // lets call it arr
    arr = pi;
    // initialize values
    for(i = 2; i <= n; i++){ *pi = i; pi++; }
    *pi = -1; // end indicator

    printf("arr: "); print(arr);
    // point to first one
    p = 0;

    // terminate if value of p^^2 exceeds n
    while(arr[p]*arr[p]<n){
        // srike out all multiples of p i.e. make them zero
        pv = arr[p];
        for(i = p+1; arr[i] != -1; i++){
            if(arr[i] == 0) continue;
            if(arr[i] % pv == 0){
                arr[i]=0;
            }
        }
        // point to next non-zero number
        for(i=p+1;arr[i]!=-1;i++){
            if(arr[i] == 0) continue;
            p = i; break;
        }
        if(arr[i]==-1) break; // next-nonzero not available
        //printf("p: %d\n", p);
        //print(arr);
        //scanf("%c",&a);
    }
    // now all non-zero no. are primes
    printf("primes: "); printp(arr);
    return 0;
}

int printp(int* arr){
    int i;
    for(i = 0;arr[i]!=-1; i++){
        if(arr[i] == 0) continue;
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int print(int* arr){
    int len=0,i;
    for(i = 0;arr[i]!=-1; i++){
        printf("%d ", arr[i]);
    }
    printf("\n");
}

On Nov 29, 6:50 pm, harit agarwal <[email protected]> wrote:
> read this
>
> http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

--

You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.


Reply via email to