ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [3일차 / 파이썬] 반복문&조건문 연습 문제, ★소수 구하기
    파이썬 Python/파이썬 2022. 12. 28. 11:28

    교재 <예제 중심의 파이썬 입문 - 황재호>

    2023년 1월 달력

    #나의 답안
    
    print('2023년 1월')
    print('-'*20)
    print('일 월 화 수 목 금 토')
    print('-'*20)
    
    count = 0
    for x in range(1, 32):
        print('{:2d} ' .format(x), end='')
        count += 1
        if(count == 7):
            print()
            count = 0
    
    '''
    2023년 1월
    --------------------
    일 월 화 수 목 금 토
    --------------------
     1  2  3  4  5  6  7 
     8  9 10 11 12 13 14 
    15 16 17 18 19 20 21 
    22 23 24 25 26 27 28 
    29 30 31 
    '''
    #강사님의 답안을 참고하여 수정한 버전
    #count를 선언할 필요x
    
    print('2023년 1월')
    print('-'*20)
    print('일 월 화 수 목 금 토')
    print('-'*20)
    
    for x in range(1, 32):
        print('{:2d} ' .format(x), end='')
        if(x % 7 == 0):
            print()

    별표로 특정 형태 만들기2

    - 높이를 직접 지정해주는 형태 (n에 input() 사용하면 됨)

    n = 10
    for i in range(1,n+1):
        for _ in range(n-i):
            print(' ', end='')
        for _ in range(i):
            print('*', end='')
        print()
        
    '''
             *
            **
           ***
          ****
         *****
        ******
       *******
      ********
     *********
    **********
    '''

    테두리 형태의 사각형

    #나의 답안
    
    h = 8
    for line in range(1, h+1):
        if(line == 1 or line == h):
            print('* '*h, end='')
        else:
            print('*', end='')
            print(' '*(2*h-3), end='')
            print('* ', end='')
        print()
        
    '''
    * * * * * * * * 
    *             * 
    *             * 
    *             * 
    *             * 
    *             * 
    *             * 
    * * * * * * * * 
    '''
    # 강사님 예시코드
    
    for x in range(8):
        if(x == 0 or x == 7):
            for _ in range(8):
                 print('*', end='')
            print()
        else:
            for i in range(8):
                if(0<i<7):
                    print(' ', end='')
                else:
                    print('*', end='')
            print()
    '''
    ********
    *      *
    *      *
    *      *
    *      *
    *      *
    *      *
    ********
    '''

    1~100까지 수 중 홀수의 합 구하기

    sum = 0
    n = 100
    for i in range(1, n+1):
        if(i%2 != 0):
            sum += i
            if(i+2 > n):
                temp = '='
            else:
                temp = '+'
            print('{} {} '.format(i, temp), end='')
    print('{}'.format(sum))
    
    '''
    1 + 3 + 5 + 7 + 9 + 11 + 13 + 15 + 17 + 19 + 21 + 23 + 25 + 27 + 29 + 31 + 33 + 35 + 37 + 39 + 41 + 43 + 45 + 47 + 49 + 51 + 53 + 55 + 57 + 59 + 61 + 63 + 65 + 67 + 69 + 71 + 73 + 75 + 77 + 79 + 81 + 83 + 85 + 87 + 89 + 91 + 93 + 95 + 97 + 99 = 2500
    '''

    ★★★★★ 수식의 결과값 구하기 ★★★★★

    # p.172
    n = int(input('N의 값을 입력하세요 : '))
    sum = 0
    
    for i in range(1, n+1):
        temp =  ((2*i)**(2*i-1))
        sum += temp
    print('n의 값 : {}'.format(n))
    print('합계 : {}' .format(sum))
    
    '''
    N의 값을 입력하세요 : 6
    n의 값 : 6
    합계 : 744010475682
    '''

    ★★★★★ 1~Num 중 소수 구하기 ★★★★★

    #8 예시답안
    n = int(input('N값을 입력해주세요: '))
    for num in range(2, n):
        count = 0
        # 2 ~ num 중 나누어떨어지는 숫자가 있는지 확인
        for i in range(1, num+1):
            if num%i == 0:
                count += 1
        # 소수
        if count == 2:
            print('{} '.format(num), end='')
            
    '''
    N값을 입력해주세요: 200
    2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 
    '''

     

    ★ ★ ★ ★ ★ ★ ★ ★ ★ ★

    2부터 시작하는 자연수의 집합에서 소수의 합이 1,000,000 이상이 되는 직전의 소수는?

    ★ ★ ★ ★ ★ ★ ★ ★ ★ ★

    # 나의 코드
    total = 0
    
    k = 2
    while True:
        num = k
        count = 0
        for i in range(1, num+1):
            if num%i == 0:
                count += 1
            
        if count == 2:
            if(total < 1000000):
                total += num
            else:
                print(num)
                break
        k += 1
    # 예시코드
    sum1 = 0
    
    k = 2
    while True:
        num = k
        # 소수 판별
        count = 0 # 초기화
        for i in range(1, num+1):
            if num%i == 0:
                count += 1
        # 합계 로직    
        if count == 2:
            sum1 += num  
        if (sum1 >= 1000000):
            print(num)
            break
        k += 1

     

     

Designed by Tistory.