def sieveEr(N):
    """
        input: positive integer 'N' > 2
        returns a list of prime numbers from 2 up to N.
        
        This function implements the algorithm called
        sieve of erathostenes.         
        
    """
    
    # precondition
    assert isinstance(N,int) and (N > 2), "'N' must been an int and > 2"
    
    # beginList: conatins all natural numbers from 2 upt to N
    beginList = [x for x in range(2,N+1)]

    ans = [] # this list will be returns.     
    
    # actual sieve of erathostenes
    for i in range(len(beginList)):
        
        for j in range(i+1,len(beginList)):
            
            if (beginList[i] != 0) and \
            (beginList[j] % beginList[i] == 0):
                beginList[j] = 0
    
    # filters actual prime numbers.           
    ans = [x for x in beginList if x != 0]
    
    # precondition
    assert isinstance(ans,list), "'ans' must been from type list"    
    
    return ans