F

#### Franck Ditter

knowing if the call to append is O(1), even amortized.

Do lists in Python 3 behave like ArrayList in Java (if the capacity

is full, then the array grows by more than 1 element) ?

def sdiv(n) : # n >= 2

"""returns the smallest (prime) divisor of n"""

if n % 2 == 0 : return 2

for d in range(3,int(sqrt(n))+1,2) :

if n % d == 0 : return d

return n

def isPrime(n) :

"""Returns True iff n is prime"""

return n >= 2 and n == sdiv(n)

def primes(n) : # n >= 2

"""Returns the list of primes in [2,n]"""

res = []

for k in range(2,n+1) :

if isPrime(k) : res.append(k) # cost O(1) ?

return res

Thanks,

franck