>  기사  >  백엔드 개발  >  정확한 결과를 위해 Python에서 소수 인쇄를 최적화하는 방법은 무엇입니까?

정확한 결과를 위해 Python에서 소수 인쇄를 최적화하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-21 13:34:31725검색

How to Optimize Prime Number Printing in Python for Accurate Results?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.