✏️

220811 | ① Python / 제어문 예제 (추가) : 소수 출력, 별 찍기, 피보나치 수열 본문

K-Digital Training

220811 | ① Python / 제어문 예제 (추가) : 소수 출력, 별 찍기, 피보나치 수열

콩세 2022. 9. 30. 19:19

< 소수 출력>

 

합성수 : ex) 4, 6, 8, 10, 12, 14, 15, ...

소수 : ex) 2, 3, 5, 7, 11, 13, 17, 19, ...

1을 제외하고 1과 자기 자신으로만 나누어 떨어지는 수.

1과 자기 자신을 제외한 모든 수로 나누었을 때 나머지가 0이 나오지 않는 수.

 

- 10 이하의 소수 출력하기

1은 소수가 아니니까 2부터 시작. (num = 2)

num = 2

while num <= 10:
    is_prime = True
    div = 2
    while div <= num-1:
        if num % div == 0:
            is_prime = False
        div += 1
    if is_prime == True:
        print(num)
    num += 1

- 정수 입력받아서 소수 판별

num = int(input("정수를 입력하세요: "))

is_prime = True
div = 2
while div < num:
    if num % div == 0:
    	is_prime = False
    div += 1
if is_prime:
    print(num, "은(는) 소수입니다.")
else:
    print(num, "은(는) 소수가 아닙니다.")

< 별 찍기 >

row  = 1
while row <= 5:
    col = 1
    while col <= 5:
        print("*", end = "")
        col += 1
    print()
    row += 1
*****
*****
*****
*****
*****

 

row = 1
while row =< 5:
    col = 1
    while col <= 5:
        if col <= row:
            print("*", end = "")
        col += 1
    print()
    row += 1
row = 1
while row <= 5:
    col = 5
    while col >= 1:
        print('*' if row + col >= 6 else ' ', end='')
        col -= 1
    print ()
    row += 1
*
**
***
****
*****

 

row = 1
while row <= 5:
    col = 1
    while col <= 5:
        if row + col > 5:
            print("*", end = "")
        else:
            print(" ", end = "")
        col += 1
    print()
    row += 1
row = 1
while row <= 5:
    col = 1
    while col <= 5:
        print("*" if row + col > 5 else " ", end = "")
        col += 1
    print()
    row += 1

 

    *
   **
  ***
 ****
*****

 

row = 5
while row >= 1:
    col = 5
    while col >= 1:
        if col <= row
            print("*", end="")
        col -= 1
    print()
    row -= 1
row = 1
while row <= 5:
    col = 1
    while col <= 5:
        print("*" if row + col <= 6 else " ", end = "")
        col += 1
    print()
    row += 1
*****
****
***
**
*

< 피보나치 수열 >

 

피보나치 수 :

첫째 및 둘째 항이 1이며, 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다.

편의상 0번째 항을 0으로 두기도 한다.

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

 

- 피보나치 수열 10개 출력하기 (1번, 2번 항은 1이니까 생략하고, 3번째 항부터 10개 출력)

num1 = 1
num2 = 1
num3 = num1 + num2

i = 0
while i < 10
    print(num3)
    
    num1 = num2
    num2 = num3
    num3 = num1 + num2
    
    i += 1
2
3
5
8
13
21
34
55
89
144

 

- 정수를 입력받아서 해당 번째 피보나치 수열 출력하기

   (ex. 정수를 입력하세요: 3  ➡  3번째 피보나치 수열 항의 값은 2 입니다.)

num = int(input("양의 정수를 입력하세요: "))

ans = None

match num:
    case 1|2:
        ans = 1     # 1번, 2번째 항의 값은 1이다. / 2번까지는 특저어 규칙 없이 1을 고정값으로 가진다.
    case _:
        i = 3
        num1 = 1
        num2 = 1
        while i <= num:
            num3 = num1 + num2
            num1 = num2
            num2 = num3
            i += 1
        ans = num3
print(num, "번째 피보나치 수열 항의 값은", ans, "입니다.")

 

 

더 있는데 그만적을란다.. 머리터짐🤯