python2 입력받은 자연수 약수 구하는 알고리즘

#-*- coding:utf-8 -*-

n = input("숫자") #숫자 입력받기

for i in range(1,n+1): # n이 9라면 i 는 1부터 9까지 1,2,3,4,5,6,7,8,9
    if(n%i ==0): # 9를 i로 나누었을 때 나머지가 0이면 약수
        print i,"는",n,"의 약수임"


print "##############"   # 밑에는 다른 방식

for i in range(1,n+1): # 위와 같음
    mok = int(n/i) # 몫을 mok에 정수로 할당
    nmg = n - mok*i # 나머지를 nmg에  할당
    if(nmg==0): # 나머지가 0이면 약수
        print i,"은",n,"의 약수임"




a =[] # 리스트 초기화
N = input("숫자") # 자연수 N 입력받음
a.append(N) #입력받은 자연수 a[0]에 넣음

for i in range(N-1,-1,-1): # 9를 입력받으면 8부터 0까지 -1씩 줄어듬 8,7,6,5,4,3,2,1,0
    try:# 마지막 i가 0이되면 ZeroDivisionError 예외가 발생 따라서 잡아준다.
        ng = N % i # 나머지 계산
        if(ng==0): #나머지가 0이면
            a.append(i) #차례대로 리스트에 넣어줌
    except:
        continue
for i in range(len(a)-1,-1,-1): # 리스트에 들어간 약수를 오름차순으로 출력하기 위함
    print a[i] #a의 길이-1 즉 약수가 3개니까 길이는 3하지만 index는 0~2까지

#따라서 -1을 해준다 따라 2,1,0 순으로 차감




출력
숫자9
1 는 9 의 약수임
3 는 9 의 약수임
9 는 9 의 약수임
##############
1 은 9 의 약수임
3 은 9 의 약수임
9 은 9 의 약수임
숫자9
1
3
9

댓글

이 블로그의 인기 게시물

About Kafka Basic

About JVM Warm up

About ZGC

Spring Boot Actuator readiness, liveness probes on k8s

About G1 GC

sneak peek jitpack

About idempotent

C 언어 구조체의 포인터 멤버 변수

Synology NAS에 MariaDB 10에 Mysql workbench로 원격접속하기

About Websocket minimize data size and data transfer cost on cloud