2013-12-23 2 views
-1

다음 코드를 가지고 있으며 변수 a에 제곱 한 숫자의 가장 큰 소수 요소를 찾으려고합니다. 인쇄 테스트를 할 때 iterator가 증가하지 않는 것 같습니다. 코드는 무한히 실행됩니다. 어떤 팁? 이것이 무한 루프가되는 지점을 놓치고 있습니까?파이썬 시작하기, 반복자 작업을 할 수 없습니다.

import math 

a = math.sqrt(600851475143) 
primefactors = [0] 
i=1 

while i<=a: 
    if a%i == 0: 
     if i%2 != 0 and i%3 != 0 and i%4 != 0 and i%5 != 0 and i%6 != 0 and i%7 != 0 and i%8 != 0 and i%9 != 0: 
      primefactors.append(i) 
      print(primefactors) 
    i=i+1 

편집 : 상한값과 테스트 값을 모두 실수로 사용함. 모든 해답을 가져 주셔서 감사합니다!

+3

매우 긴 if 문은 다음과 같이 단순화 할 수 있습니다. '모든 경우 (x, 범위 내 (2, 10)의 경우 x : % x) : – iCodez

+2

일반적으로 접근 방식이 작동하지 않을 것이라고 확신합니다. – JJJ

+2

'a'에 대해 더 낮은 값을 사용하여 느린지 테스트 해보십시오. –

답변

0

내가 시도 할 첫 번째 일은 증가한 후에 루프의 끝에서 변수를 출력하는 것입니다. 프로그램이 775146 회 반복되어야합니다. 가능한 한 시간이 걸릴 수 있습니다. 나는 작은 숫자로 먼저 시도한 다음 어떻게 될지 살펴 봅니다.

2

은 775146.099225이므로 a%i==0은 사실이 아닙니다. 반복기가 작동하더라도 (그리고 나를 위해 작동하는 경우에도) 기본 요소에 아무 것도 추가되지 않습니다.

관련 문제