Last active
September 2, 2018 08:25
-
-
Save DPS0340/696b1fca170da799179403910020edb8 to your computer and use it in GitHub Desktop.
Primechecker.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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