jape
jape

Reputation: 2901

Is number prime? (no recursion or loops)

I am given the following function:

def divides(n):
    def div(k):
        return n % k == 0
    return div

I need to determine if the inputted number is prime, but I cannot use any recurssions or loops. Does anyone know how to go about this?

I was told to use sum, map, and the divides function above, but I'm not exactly sure how to do that.

EDIT:

I've tried this, but I'm not sure how to input the k in div:

def prime(n):
    lst = range(1, n**.5)
    result = map(divides(n), lst)
    return result

EDIT2:

I am getting an answer, but they are all False. Any ideas?

def prime(n):
    lst = range(1,1+int(n**.5))
    result = map(divides(n), lst)
    return sum(result) == 0

Upvotes: 0

Views: 170

Answers (2)

Copperfield
Copperfield

Reputation: 8520

one liner version

def isPrime(n):
    return 0 == sum(map(divides(n),range(2,1+int(n**.5))))

Upvotes: 4

jape
jape

Reputation: 2901

This is the final code that works for me:

def prime(n):
    lst = range(1, 1+int(n**.5))
    result = map(divides(n), lst)
    return sum(result) == 1

Upvotes: 1

Related Questions