1) 1은 소수가 아니다
1) 몫으로 나올 수 있는 소수를 찾음 > 2, 3, 5
5 * 6 = 30이므로 6이하로 찾기
2) (5 * 몫)에 5보다 작은 소수를 더함
10, 15, 25에 2, 3 더함
2제외 2의 배수 제거, 3제외 3의배수 제거, 5제외 5의 배수 제거 등
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))
1) 소인수 : 약수(인수) 중 소수인 숫자
2) 소인수분해 : 1보다 큰 정수를 소인수의 곱으로 나타낸 것
25 = 5^2
3) 소인수분해를 이용해 약수를 찾을 수 있음
2^2*5 =(1,5) * ( 1, 2, 2^2)
#소인수 찾기
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)
1) 소수로 '나눗셈'해서 구한다
2) 유클리드 호제법..?
https://seunghyum.github.io/algorithm/Euclidean-algorithm/#
코드를 입력하세요
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))