2011-12-01 4 views
2

을 기능을 찾을 수 있습니다. 지금까지 나는 가지고있다 :는 소수가 나는 기능이

def findPrimes(n): 
    primes = [2] 
    for i in range(3,n): 
     if containsNoDivisor(i, primes): 
      primes.append(i) 
    return primes 

그러나 소수 대신에 True를 돌려 주는가? 당신이 당신의 containsNoDivisor 함수를 반환하는 대신 True를 인쇄하는 것처럼

+4

음,'containsNoDivisor'는 그것을 반환하는 대신'true'를 인쇄하는 이유는 무엇입니까? – Toomai

+0

작은 업데이트로 인해 막대한 요소로 인해 성능이 향상됩니다. 몇 주 전에 다른 질문에 게시 한 요점을 살펴보십시오 https://gist.github.com/1347515 – rplnt

답변

1
def containsNoDivisor(n, ps): 
    '''n is an integer and ps is a list of integers. Returns True if 
    and only if there is no integer in ps that divides n. ''' 
    for p in ps: 
     if n % p == 0: 
      return False 
    print True 
    ^^^^^ 
should be return 
4

는 것 같습니다. 그것은 다음과 같아야합니다

def containsNoDivisor(n, ps): 
    '''n is an integer and ps is a list of integers. Returns True if 
    and only if there is no integer in ps that divides n. ''' 
    for p in ps: 
     if n % p == 0: 
      return False 
    return True 

print 문은 단순히 콘솔에 값을 출력 - 대화 형 쉘에서 각 기능을 시도하는 경우, 그것을 할 수있는 쉬운 실수. return은 실제로 값을 가져 와서 호출 한 값으로 다시 전달하므로 데이터를 생성하거나 처리 한 함수 외부에서 데이터를 사용할 수 있습니다.

0

3에서 n까지 모든 숫자를 테스트하고 있습니다. 모든> 2가 복 합이므로 짝수를 테스트 할 필요가 없습니다. 1시 3 분, 5 분, 7 분, 9 분, 11 분이 아닌 2 분의 1 단계를 시도하십시오.

관련 문제