2017-01-30 1 views
0

for 루프를 배우기 위해 소수를 찾는 프로그램을 만들고 있습니다. 나는이파이썬에서 가능한 루프에 중첩되어 있습니까?

primes = [1, 3, 5, 7, 9, 11, 13, 17, 19, 29] 
hold_the_primes = [] 
for x in range(29,841): 
    for y in primes: 
     if x % y == 0: 
      pass 
     else: 
      hold_the_primes.append(x) 
primes.extend(hold_the_primes) 
for x in primes: 
    print x 

을 시도했습니다 %의 == 0을 확인하는 데 사용할 수있는 몇 가지 소수의 목록을 가지고 있지만, 아무 것도 반환되지 않으며 터미널이이 시점에서 붙어됩니다. 이 작업을 수행하려면 어떻게해야합니까?

+0

알아 냈습니다. 방금 for 루프를 포함하는 primetest라는 함수를 정의했습니다. –

+0

"터미널이 막혔다"는 것은 무엇을 의미합니까? 그러나 귀하의 질문에 대답, 네 중첩 for-loops 가능합니다. 코드의 논리는 꺼져 있지만 구문 상으로는 정상이며 작동하며 터미널에 무언가를 인쇄합니다. –

답변

1

파이썬에서는 중첩 루프가 가능합니다. 문제는 내가 믿는 코드입니다.

는 여기에 몇 가지 포인터 :

  • 1 프라임하지 않고, 목록 대신 2로 시작해야합니다. 당신은 또한 분실했습니다 23.
  • 숫자가 소수로 나눌 수없는 경우, 그것은 소수라고 가정하는 것처럼 보입니다. 나는 그것이 적절한 수표라고 생각하지 않는다. 예를 들어, x = 29 인 경우 y = 3, 5, 7, 9, 11, 13, 17 및 19 일 때 hold_the_primes.append(x)이 호출됩니다.
  • 1 이외의 다른 요소가없는 경우 숫자는 소수입니다.
  • (편집) 당신이 한 모든 함수로 루프에 대한 두 번째를 이동했다 경우에, 나는 당신이 여기

을 예상대로 코드가 작동하지 않는 내가 믿는 일 것입니다 예를 들어이 있다고 볼 생각 :

primes = [2, 3, 5, 7, 9, 11, 13, 17, 19, 23, 29] 
hold_the_primes = [] 

def isPrime(n): 
    temp = 2; 
    while temp*temp <= n: #temp < math.sqrt(n): 
     if n % temp == 0: 
      return False 
     temp += 1 
    return True 

for x in range(30,841): 
    if isPrime(x): 
     hold_the_primes.append(x) 


primes.extend(hold_the_primes); 
for x in primes: 
    print x 
관련 문제