• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

리미트 타임에러

23.02.19 21:18 작성 조회수 183

0

소수 개수 구하기 문제

언어 : 파이썬

내용: 제가 작성한 하위 코드 for문 두 개 돌렸을뿐인데 리미트 타임에러가 뜹니다..

구글링 해서 emurate함수 써서 푼 문제는 정답이라고 뜹니다.

난이도 초급에 emurate함수 방식으로 써서 풀라는 의도는 아니라고 판단되어 문의 드립니다. 아래 코드가 에러인지, 제가 잘 못하고 있는지 궁금합니다.

(입사 전에는 자바로 면접 보고 들어갔는데 입사 한 회사에서 사용하는 언어는 파이썬이라서 파이썬으로 코테 풀고 있는점도 참고해서 피드백 부탁드립니다)

 

received_data = int(input())

list = []

for i in range(2,received_data+1):

list.append(0)

for i in range(2,received_data+1):

if list[i-2]==0:

for j in range(2,received_data+1):

if j>i and j%i==0:

list[j-2]=1

print(list.count(0))

 

 

답변 1

답변을 작성해보세요.

0

안녕하세요^^

소수의 개수 구하기는 "에라토스테네스 체" 를 사용하는게 제일 빠릅니다.

n=int(input())
a=[0]*(n+1)
cnt=0
for i in range(2, n+1):
    if a[i]==0:
        cnt+=1
        for j in range(i, n+1, i):
            a[j]=1

print(cnt)