[1~8] 기초수학(약수,소수,배수)

이재은·2024년 5월 15일

1강.

1. 약수와 소수

1) 1은 소수가 아니다

  • 실습 (논리적으로 생각해보기)
    1~30중 5로 나눈 몫과 나머지가 모두 소수인 숫자 찾기
	1) 몫으로 나올 수 있는 소수를 찾음 > 2, 3, 5
		5 * 6 = 30이므로 6이하로 찾기
	2) (5 * 몫)에 5보다 작은 소수를 더함
		10, 15, 25에 2, 3 더함
  • 실습
    1~30중 소수 찾아보기
	2제외 2의 배수 제거, 3제외 3의배수 제거, 5제외 5의 배수 제거 등

2강.

2. 약수와 소수(파이썬)

1) 약수 : 나머지가 0인 숫자를 찾자
2) 소수 : 들어간 수 이하의 수로 나눴을 때 나머지가 0인 경우가 없을 때

#소수★★★★★★
#답
inputNumber = int(input())

for number in range(2, (inputNumber+1)):
    flag = True   # number에서 일단 2, 3, 4, 5.. 등의 수를 꺼내옴
    for n in range(2, number) :  #그 수 자체를 계속 나눠서 판별해야 하기에
        if number % n == 0 :
            flag = False
            break                #하나의 number에서 모두 판별 하고 나서

    if (flag) :
        print('{}은 소수'.format(number))

    else  :
        print('{}은 합성수'.format(number))
       
#내가 한거
for number in range(2, (inputNumber+1)):
    flag = True 
    for n in range(2, number) :  야 하기에
        if number % n != 0 :
            continue
        else :
            flag = False
            break               

    if (flag) :
        print('{}은 소수'.format(number))

    else  :
        print('{}은 합성수'.format(number))

3강.

3. 소인수분해

1) 소인수 : 약수(인수) 중 소수인 숫자
2) 소인수분해 : 1보다 큰 정수를 소인수의 곱으로 나타낸 것

25 = 5^2

3) 소인수분해를 이용해 약수를 찾을 수 있음

2^2*5 =(1,5) * ( 1, 2, 2^2)

4강.

4. 소인수와 소인수분해(파이썬)

#소인수 찾기 

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

n = 2
while n <= inputNumber :
    if inputNumber % n == 0 :
        print('{}은 소인수'.format(n))
        inputNumber /= 2
    else :
        n += 1
#최소수를 곱해서 제곱수를 만들기 > n의 개수 찾기 중요
: 리스트를 만들어 추가하고 n의 개수를 찾기(count) 

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

n = 2
searchNumber = []
while n <= inputNumber :
    if inputNumber % n == 0 :
        print('{}은 소인수'.format(n))
        if searchNumber.count(n) == 0 :
            searchNumber.append(n)
        elif searchNumber.count(n) == 1 : 
        #하나라도 있는데 그게 또나왔다 - 짝수개 있다는 뜻 : 무시
            searchNumber.append(n)
        inputNumber /= 2
    else :
        n += 1

# 이렇게 해야 홀수인 것의 개수를 셀 수 있음

print(searchNumber)

5강.

5. 최대공약수

1) 소수로 '나눗셈'해서 구한다
2) 유클리드 호제법..?
https://seunghyum.github.io/algorithm/Euclidean-algorithm/#

코드를 입력하세요

6강.

6. 최소공배수

1) 소인수분해 이용해 구하기
2) 소수로 나눗셈 : 숫자가 세개인 경우 두개만 나눠져도 ok

두개의 수에 대한 최소공배수 > 그 최소공과 나머지수의 최소공 구하기
for i in range(1, (Num1 + 1)) :
    if (Num1 % i == 0 ) and  (Num2 % i == 0) :
        print('공약수 : {}'.format(i))
        maxNum = i

print('최대공약수 : {}'.format(maxNum))

minNum = (Num1 * Num2) // maxNum
print('최소공배수 : {}'.format(minNum))

newNum = minNum

for i in range(1, (newNum  + 1)) :
    if (newNum % i == 0 ) and  (Num3 % i == 0) :
        print('최대 공약수 : {}'.format(i))
        maxNum = i

print('최대공약수 : {}'.format(maxNum))
minNum = (newNum * Num3) // maxNum
print('{}, {},{}의 최소공배수 : {}'.format(Num1, Num2, Num3, minNum))
profile
Dare to be an optimist

0개의 댓글