Hi everyone, I'm new to Daniweb and programming in general. I wrote a program to implement Euler's sieve, and it seems to work for small primes. But, it incorrectly lists certain numbers as primes for larger ranges. For example, for n = 400, it lists 391 as prime. I've gone through the program again, but I can't see what's wrong with it. All help will be appreciated, thanks! Here's the code:
n = int(raw_input("Num: ")) s = range(3, n+1, 2) i = 1 l = 0 a = len(s) - 1 while l < a: if s[l] != 0: j = (l + (s[l]*i)) while (j <= a): s[j] = 0 i += 1 j = (l + (s[l]*i)) else: if l < a: while s[l] == 0 and l < a: l += 1 if l == a: break i = 1 l += 1 s = list(set(s)) s.sort() s.remove(0) s =  + s print s
Edited by Thisisnotanid: Added details.