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 JVM Warm up

About idempotent

About Kafka Basic

About ZGC

sneak peek jitpack

Spring Boot Actuator readiness, liveness probes on k8s

About Websocket minimize data size and data transfer cost on cloud

About G1 GC

대학생 코딩 과제 대행 java, python, oracle 네 번째