Skip to content

Instantly share code, notes, and snippets.

@DPS0340
Last active September 2, 2018 08:25
Show Gist options
  • Save DPS0340/696b1fca170da799179403910020edb8 to your computer and use it in GitHub Desktop.
Save DPS0340/696b1fca170da799179403910020edb8 to your computer and use it in GitHub Desktop.
Primechecker.py
def run():
print('''어디까지 소수인지 체크할건지 범위를 정해야 합니다.
범위를 정해주세요.''')
a = int(input())
print("무슨 숫자가 소수인지 아닌지 알고 싶으신가요?")
b = int(input())
result = []
primetable = []
notprimetable = []
ran1 = list(range(a + 1)) # a까지 범위 설정
print(ran1)
del ran1[0:1] # 설정한 범위 중 0 제거
print(ran1)
ran2 = list(range(a))
print(ran2)
del ran2[0:2] # 첫번째 인자가 0, 두번째 인자가 1, 세번째 인자가 2->안들어감
# 0, 1 제거
print(ran2)
####### 소수
for i in ran1:
primecounter = True # 초기값=소수
for p in ran2:
if i == 1:
primecounter = False # 1은 소수, 합성수 x
if i == 2:
primecounter = True # 2는 소수이다.
if i ** (1 / 2) >= p: # p가 루트 i보다 작거나 같을 경우
if i % p == 0: # 나머지 = 0인경우
primecounter = False # 합성수
print(i % p)
print(primecounter)
break # for p문 계산 중단
print(i % p)
print(primecounter)
else: # p가 루트 i보다 큰경우
break # 검증 완료
if primecounter == True: # 소수면
primetable = primetable + [i] # primetable에다 추가
print("%d는 소수입니다." % i)
else:
notprimetable = notprimetable + [i] # notprimetable에다 추가
print("%d는 소수가 아닙니다." % i)
###### 소수
print('소수 테이블 제작 완료!')
print(primetable)
###### 확인
if b == 1:
print('1은 소수도 아니고 합성수도 아닙니다.')
if b in primetable: # primetable에 있으면
print("%s는 소수입니다." % b) # 소수다.
else:
checker = b
print("%s는 합성수입니다." % b)
######
###### 소인수분해
for i in primetable: # 소수중에 작은것부터
if b % i == 0: # 소수들중에 나머지가 0이면
checker = checker / i # 찾는 수 = 찾는 수 / 소수
result = result + [i] # 결과물에 추가
if checker != 1: # 1이 아니면
for i in primetable: # 소수중에
if checker % i == 0: #
checker = checker / i #
result = result + [i] # 결과물에 추가
if checker == 1: # 다 나눠지면
break # 계산 끝
result.sort()
print("소인수분해 한 결과 : %s" % result)
run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment