Python에서 일련의 소수 인쇄
소수를 식별하는 것은 수학과 프로그래밍의 기본 개념입니다. 소수는 두 개의 작은 정수의 곱이 아닌 1보다 큰 정수입니다. 다음 Python 코드는 1부터 100까지 일련의 소수를 인쇄하는 것을 목표로 합니다.
코드 및 문제
소수를 찾는 일반적인 접근 방식 중 하나는 숫자를 반복하는 것입니다. 2에서 n까지. 각 숫자에 대해 2와 그 자체 사이의 숫자(1 제외)로 나눌 수 있는지 확인하세요. 나눌 수 있으면 소수가 아닙니다. 그렇지 않으면 그렇습니다.
1에서 100 사이의 소수를 인쇄하기 위한 다음 코드를 생각해 보세요.
<code class="python">for num in range(1, 101): for i in range(2, num): if num % i == 0: break else: print(num) break</code>
그러나 이 코드에서는 소수 대신 홀수가 인쇄되는 문제가 발생합니다. 외부 루프가 소수뿐만 아니라 합성수(다른 숫자의 배수)에 대해서도 반복하기 때문에 결함이 발생합니다. 결과적으로 num % i != 0인 경우 9와 같은 홀수 합성수에 대해 true가 되어 모든 홀수를 잘못 인쇄하게 됩니다.
해결책 및 최적화
이 문제를 해결하려면 소수를 명시적으로 확인하도록 코드를 수정해야 합니다. 수정된 버전은 다음과 같습니다.
<code class="python">for num in range(2, 101): # Start at 2 as 1 is not prime prime = True for i in range(2, num): if num % i == 0: prime = False if prime: print(num)</code>
이 코드에서는 처음에 True로 설정된 부울 변수 프라임을 도입합니다. 그런 다음 내부 루프를 사용하여 2와 num-1(num 제외) 사이의 각 숫자를 확인합니다. num이 임의의 숫자 i로 나누어지면 소수가 아님을 나타내기 위해 prime을 False로 설정합니다. 내부 루프 이후 소수가 True이면 num을 인쇄합니다.
이 코드는 지정된 범위 내의 소수를 정확하게 식별합니다. 그러나 num의 제곱근까지만 제수를 확인하여 더욱 최적화할 수 있습니다. 이는 제곱근보다 큰 인수는 제곱근보다 작은 해당 인수를 갖기 때문입니다.
최적화된 버전은 다음과 같습니다.
<code class="python">for num in range(2, 101): prime = True for i in range(2, int(math.sqrt(num)) + 1): if num % i == 0: prime = False if prime: print(num)</code>
이러한 조정을 사용하면 코드가 효과적으로 인쇄됩니다. 1에서 100 사이의 소수 계열입니다.
위 내용은 정확한 결과를 위해 Python에서 소수 인쇄를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!