wnsfuf0121   5년 전

전 여기서 더 무엇을 해야할 지 모르겠습니다. C언어와 Java의 논리와 일치하는 것 같은데 언어의 한계인가요...? 여기서 좀 더 줄일 수 있는 방법 좀 알려주싶쇼 행님덜

hello70825   5년 전

왠만하면 분류에 나온 유형이나 그것보다 효율적인 알고리즘으로 푸는게 좋습니다..

5.9초로 통과하는 코드를 보니 다음과 같이 만들었네요

이렇게 해도 시간 초과가 나오면 리스트 추가해주지 말고 바로 for문으로 시작해서 i 범위를 min,max+1로 잡으면 될 것 같습니다.

nova9128   5년 전

파이썬이 고급언어이지만 다른 언어에 비해 좀 느립니다. 

다만 그렇기에 그걸을 최적화시켜 놓은 알고리즘 소스코드들이 많습니다.

당장에는 프로그래밍 실력 향상을 위해 직접 고민해보고 구현해보신후 조금 더 공부해보실기회가 되신다면

https://blog.naver.com/nova912...

여기에서 제가 공부하려고 소수문제만 모아두고 다른분들 소스코드랑도 속도 비교해놓은 것 있는데 참고하셔요.



소수 찾기[편집]

현재까지 알려진 가장 간단한 방법으로 에라토스테네스의 체가 있다. 방법은 다음과 같다.

  1. 찾고자 하는 범위의 자연수를 나열한다.
  2. 2부터 시작하여, 2의 배수를 지워나간다.
  3. 다음 소수의 배수를 모두 지운다.

이를 반복하여 마지막까지 지우면, 남는 수들이 소수가 된다. 이 과정은 사실 어떤 자연수 

n이 소수임을 판정하기 위해서 {\displaystyle \lfloor {\sqrt {n}}\rfloor }까지만 진행하면 되는데[1], 수가 수를 나누기 위해서는 그 몫이 항상 필요하며 나누는 수와 몫 중 어느 하나는 반드시 {\displaystyle {\sqrt {n}}} 이하이기 때문이다.

소수를 골라내기 위한 방법은 다음과 같다. 이 방법을 이용해 소수를 어느 정도 골라낼 수 있다.

  1. 2와 5를 제외하면, 모든 소수의 일의 자리 수는 1, 3, 7, 9이다.
  2. 어떤 자연수 n이 소수임을 판정하기 위해선 {\displaystyle {\sqrt {n}}}까지의 수 중 1을 제외하고 그 자연수의 약수가 있는 지 확인하면 된다.
  3. 배수의 성질을 이용하면 쉽게 구할 수도 있다.

그 외에도 다양하고 복잡한 판정법이 존재하지만, 위의 세 가지는 당연하고 간단한 것들이다.


nova9128   5년 전

wnsfuf0121   5년 전

답변 정말 감사드립니다. 현재 여러분들의 피드백을 받아 두개의 코딩을 시도하였는데, 둘 다 시간초과가 됩니다. 한번만 더 봐주시면 감사하겠습니다 ㅜㅜ

nova9128   5년 전

음 소수리스트를 따로 만들어야된다는것이 아래같은 방법이었습니다.^^

즐거운 코딩하세요~~

댓글을 작성하려면 로그인해야 합니다.