Finding all prime numbers from 1 to N.

To find all prime numbers from 1 to N.

I know we usually approach this problem using Sieve of Eratosthenes, I had an alternate approach in mind using gcd that I wanted your views on.

My approach->
Keep a maintaining a variable if all prime numbers processed till any iteration. If gcd of this var, number i ==1. That means the nos. are co-prime so i must be prime.

For ex: gcd(210,11) == 1, so 11 is prime.
{210=235*7}

Pseudocode:

Init num_list={contains numbers 2 to N} [since 0 and 1 arent prime nos.]
curr_gcd = 2, gcd_val=1
For i=3;i<=N;i++
    gcd_val=__gcd(curr_gcd,i)
    if gcd_val == 1 //(prime)
          curr_gcd = curr_gcd * i
    else //(composite so remove from list)
         numList.remove(i)

Alternatively we can also have a list and push the prime numbers into that list.
SC = O(N)
TC = O(N log(N)) [TC to calculate gcd using euclid's method => O(log(max(a,b)))]

Does this seem right or I am calculating the TC incorrectly here. Please post your views on this.
TIA!

Comments (2)