본문 바로가기
수학

python - 약수, 최대공약수, 최소공배수

by ddahu 2023. 2. 7.

python - 약수 

 

기본적인 풀이 방식 ( 자기 자신을 나누었을때 0)

import math,time 

def baseDivi(num = 987654321):
    start = time.time()
    result = []
    for i in range(1,num//2+1):
        if num % i == 0:
            result.append(i)
    end = time.time()
    print(f'Time : {end-start :.5f}')
    print(result)

Math 함수를 활용해서 속도를 개선

def sqltDivi(num = 987654321):
    result = []
    start = time.time()
    for i in range(1,int(math.sqrt(num))+1):
        if(num % i == 0):
            result.append(i)
            if( num / i != i):
                result.append(int(num / i))
    result.sort()
    end = time.time()

    print(f'Time : {end-start :.5f}')
    print(result)

결과