15번째 줄처럼 조건문을 작성하시면 j가 0이 아니고 x-j가 소수리스트에 있으면 참이라고 인식됩니다. 따라서 해당 경우에는 j in p_list and x-j in p_list로 표현하는게 바람직하며 그 외 추가적으로 수정이 지향되는 부분들에 대해 말씀드리겠습니다. 어떤 수가 소수인지 검사하기 위해서는 2~해당수의 제곱근까지 그 수가 나뉘어지지않으면 그 수는 소수입니다. 그런데 4번째 for문의 범위를 보면 n + 1까지 for문을 돌리고 있습니다. 아마 질문자분도 방금 말씀드린 규칙에 대해서는 인지하셔서 **0.5를 넣으신 것 같은데 원하시는 결과를 얻으시려면 int(n**0.5)+1을 하셨어야합니다. 또한 이미 해당 수가 소수인지 아닌지 여부를 판별시켜주는 a리스트가 있기때문에 굳이 이 문제에서는 소수리스트를 만드실 필요가 없습니다. 오히려 x가 소수인지 확인하기 위해서 a[x]로 O(1)로 해결되었을 문제가 in연산 사용시 O(n)까지 증가해버립니다. 또한 지금은 문제가 없지만 for문 범위 정정시 10000의 제곱근 이후로는 p_list에 들어갈 수 없습니다. 따라서 더더욱 소수리스트가 등장하면 안됩니다.
opr8632 4년 전
8 번째 줄까지 에라토스테네스의 체를 활용하여 소수 리스트를 생성한후 마지막줄 주석설명과 같은 논리에 의해 코딩을 해보았습니다. 여려가지 예제를 테스트해보았고 성공했으나 채점시엔 바로 틀렸습니다라고 나오는데 반레가 무엇인지 모르겠습니다. 질문게시판을 뒤지다가 소수 리스트의 공간을 충분히 주면 성공한 사례들을 보고 n 값을 크게 주어 보아도 실패입니다. 도와주세요 ㅠ