2차 프로젝트가 끝나고 알고리즘 강의가 시작됐다..ㅎ

오늘 처음 접한 알고리즘 너무 어려워...

이해 안되면 유형이라도 외워보기가 목표!


1주차 숙제 1

Q. 정수를 입력 했을 때, 그 정수 이하의 소수를 모두 반환하시오.

input = 20


def find_prime_list_under_number(number):
    prime_list = []
    for n in range(2, number+1):
        for i in prime_list:
            if n % i == 0:
                break
        else:
            prime_list.append(n)

    return prime_list


result = find_prime_list_under_number(input)
print(result)
  1. 빈 prime_list를 만들어준다.
  2. range 함수를 이용해 구간을 정해준다.(소수는 1보다 큰 자연수 중에 1과 자기 자신만을 약수로 가지는 수 이므로 0과 1 제외)
    • range 함수: 숫자 리스트를 자동으로 만들어 주는 함수
      • # ex
        >>> a = range(10)
        >>> a
        range(0, 10)
        range(10)은 0부터 10 미만의 숫자를 포함하는 range 객체를 만들어 준다.(0~9)
  3.  range 함수안의 n 이라는 숫자와 prime_list 안의 i라는 숫자라는 for 문을 두고 if 문으로 n 나누기 i 가 0이라면 break처리를 해서 n 값이 prime_list 안에 들어가지 않도록 한다.
  4. else를 통해 n 나누기 i가 0이 아니라면 prime_list에 n 값이 들어가도록 한다.

 

코드를 짜며 실수한 것.

  1. 1. else의 경우 if의 아래쪽 동일한 위치에 있어야 되는데 for문 밑에 위치를 해서 코드가 잘 실행되지 않았다.

 

아쉬운 점.

  1. 위의 작성한 코드는 2번째로 효율적인 코드인데 제일 효율적인 아래 코드를 잘 이해하기가 어려웠다! 좀 더 파볼예정이다..ㅎ
    • input = 20
      
      
      def find_prime_list_under_number(number):
          prime_list = []
      
          for n in range(2, number + 1):
              for i in prime_list:
                  if n % i == 0 and i * i <= n:
                      break
              else:
                  prime_list.append(n)
      
          return prime_list
      
      
      result = find_prime_list_under_number(input)
      print(result)

+ Recent posts