본문 바로가기
개발일지/Python

[복기] 파이썬 소수 prime number 코드 분석 (추가. 약수,소수 반복문 코드)

by 다니엘의 개발 이야기 2022. 5. 11.
320x100
# 소수 코드 분석

inputNum = 5
list_prime = []


# 2부터 여기 코드에서는 inputNum에 5를 지정해줬으니 범위 5까지
for number in range(2, inputNum+1):
    # 두번째 for문이 끝나고 첫번째 for문으로 올라올때
    # flag = False였던 값도 다시 초기화 된다.
    # 때문에 만약에 반복문 "안에서"변화된 값으로 고정 원하는 것은
    # 해당 반복문 밖으로 빼놓고 써야한다.
    flag = True

    # 첫번째로는 첫번째 for문에서 2가 떨어졌기에 2부터 1까지의 범위가 설정된다.
    # 그래서인가 바로 밑의 if 문까지 내려가지 않고 생략하게된다. (-1꼴이 되기 때문인듯)
    # 따라서 두번째 for문의 if는 생략하고 첫번째 for문 안에 있는 if로 가게된다.
    for n in range(2, number):
        # 두번째 for문에서 설정값이 5라면 2부터 4까지 바로 밑의 if에서 False가 나오면
        # 밑으로 바로 떨어지는게 아니라, continue 기능처럼 4까지 올려보낸다.
        
        if number % n ==0:
            # 이게 있어줌으로써 바로 위의 if문에서 True가 떨어지면 
            # 첫번째 for문에 귀속되는 if문에 값이 안들어가도록 방지해준다.
            flag = False
            break

    if flag:
        list_prime.append(number)

print(list_prime)

 

 

추가. 약수, 소수 반복문 코드

 

inputNum = int(input('1보다 큰 정수 입력: '))

prime = []
nomal = []

# 약수
for i in range(1, inputNum+1):
    if inputNum % i == 0:
        nomal.append(i)

# 소수

for a in range(2, inputNum+1):
    flag = True

    for b in range(2, a):
        if a % b == 0:
            flag = False
            break

    if flag:
        prime.append(a)

print(f'약수: {nomal}')
print(f'소수: {prime}')
300x250