>

이것은 파이썬의 첫 번째 코드이며 5 번째 문자열의 코드에 math.sqrt(i))+1 가 포함되어야하는 이유를 완전히 알 수 없습니다  대신 math.sqrt(i) 의 그렇지 않으면 소수의 소수가 결과에 추가되므로
이것을 해결하는 방법은 가장 쉽고 가장 자연스러운 방법입니까? 미리 감사드립니다

import math
n=int(input("Print n: "))
prime_list=list(range(2,n))
for i in range(2,n):
    for j in range (2, math.ceil(math.sqrt(i))+1):
        if i % j == 0:
            try:
                prime_list.remove(i)
            except:
                j+=1
        continue
print(prime_list)

  • 답변 # 1

    j 가 필요합니다   i 의 sqrt를 통해 실행 . 파이썬 범위는 터미널 값을 포함하지않습니다.

    예 : range(2, 7)   7 를 포함하지 않습니다 . 49가 소수라는 것을 알기 위해서는 range(2, 7+1) 가 필요합니다 그래서 j  값 7 를 취할 것입니다 .

  • 답변 # 2

    파이썬이기 때문입니다.

    파이썬에서 문법 range(x, y)  일련의

    생성

    x, x+1, x+2, ..., y-2, y-1
    
    

    따라서 범위에 값을 포함 시키려면 두 번째 매개 변수가 값보다 크거나 같아야하므로 math.floor(...) + 1 를 사용해야합니다.   +1 를 생략 할 수 없습니다  부품. 그렇지 않으면 내가 소수의 쪼그리고 앉은 경우 j는 해당 소수를 반복하지 않으므로 직면하는 오류가 발생합니다.

  • 이전 jenkins - OWASP ZAP가 API를 테스트 할 수 없습니다
  • 다음 mailcore - iOS 8에서 MailCore2를 사용하여 Attchaments 보내기