기초수학_문제풀이(약수 & 소수)

jaam._.mini·2023년 11월 15일
0

📒Python 기초 수학

목록 보기
28/46
post-thumbnail

문제를 보고 먼저 풀어본 뒤 답을 맞추는 방향으로 학습해볼 예정이었으나...역시 호락호락하지 않았다...

Q>

A>

import random

rNum = random.randint(100, 1000)
print(f'rNum: {rNum}')

for num in range(1, rNum+1):

    soinsuFlag = 0 

    if rNum % num == 0:
        print(f' [약수] : {num}')
        soinsuFlag += 1 

    if num != 1: 
        flag = True 
        for  n in range(2, num): 
            if num % n == 0: 
                flag = False
                break
        if (flag): 
            print(f'[소수] : {num}')
            soinsuFlag += 1 

        if soinsuFlag >= 2: 
            print(f'[소인수] : {num}')

A> 해설

🏷️(1) 난수 발생
import random

rNum = random.randint(100, 1000)
print(f'rNum: {rNum}')

🏷️(2) for문 이용
for num in range(1, rNum+1): 🏷️ 난수 까지 반복

    soinsuFlag = 0 🏷️(5)-1 변수 선언

🏷️(3) 약수 : 나눴을 때 나머지가 0으로 떨어지는지 여부 확인
    if rNum % num == 0: 🏷️ 나누어 떨어진다 = 약수
        print(f' [약수] : {num}')
        soinsuFlag += 1 🏷️(5)-1-1 소인수가 약수의 조건을 만족한다면 2이상의 숫자가 나옴

🏷️(4) 소수 : 1외에 본인만 약수인 수
    if num != 1: 🏷️1을 포함하지 않기 위해 먼저 정의 함
        flag = True 🏷️전제 조건 설정 - 약수가 없다. = 즉, 소수(True)이다 = True
        for  n in range(2, num): 🏷️ 약수가 있다 - 즉, num은 소수가 아니다.
            if num % n == 0: 🏷️ = 약수가 있다.
                flag = False
                break
        if (flag): 🏷️ =  flag = True 이다. = 약수가 없었다.
            print(f'[소수] : {num}')
            soinsuFlag += 1 🏷️(5)-1-2 소인수가 소수의 조건을 만족한다면 2이상의 숫자가 나옴

🏷️(5) 소인수 (약수이면서 소수인 수)
        if soinsuFlag >= 2: 🏷️ (5)-1-1  + (5)-1-2에 따라 2 이상이면 소인수로 판단하겠다.
            print(f'[소인수] : {num}')

출처/참고 제로베이스 데이터 스쿨
profile
비전공자의 데이터 공부법

0개의 댓글