본문 바로가기

나눗셈

(3)
[Python] 분수의 순환소수, 순환마디 구하기 예전에 순환소수를 구하는 코드를 만들어서 포스팅을 했었다. ( https://daewonyoon.tistory.com/354 ) 손으로 하는 나누기를 그대로 따라하면서, 나머지를 기억하고, 이전에 나왔던 나머지가 다시 나오면, 싸이클이 반복되어 순환마디를 구할 수 있다는 아이디어였다. 다른 방법이 좀 더 간단할지 어쩔지 궁금해서 대충 실험을 해 봤다. 이번 아이디어는 이렇다. 순환소수는 결국 999...99 를 분모로 하는 소수로 바꿀 수 있다. 그러니, 주어진 분수의 분모가, 999...99 를 떨어지게 나눌 때까지, 9, 99, 999, 9999, ... 를 늘려가고, 나누어 떨어지면, 그 배수를 분자에도 곱하면, 분자가 순환마디가 된다. 테스트를 해 본 것은 다음과 같다. def solve(a): ..
[Python] 분수의 무제한 소수표현 구하기 분수의 십진수 소수 표현을 자릿수 제한없이 구하는 함수. from typing import List, Tuple def get_div_decimals(n: int, m: int = 1, limit: int = 0) -> Tuple[int, List[int], List[int]]: q = m // n m = (m % n) * 10 dividend = m dividend_list = [] digit_list = [] while True: # print(digit_lst) if dividend in dividend_list: break dividend_list.append(dividend) digit = dividend // n dividend = (dividend % n) * 10 digit_list.app..
1/1, 1/2, ... 1/999 의 순환소수 표현 프로젝토 오일러 26번 문제를 오랜만에 다시 풀었다. 중간결과로 n=1부터 1000 이하까지의 1/n 의 순환소수 표현을 구했다. 순환마디의 길이가 커지는 숫자들은 거의 소수로 보이고, 이 숫자들에 대해서 순환마디의 길이는 n-1 이다. 나아가 오일러파이함수(totient)와 관련이 있음. (아래 see also 1, 2) see also : 0. 관련파이썬코드 1. http://daewonyoon.pythonanywhere.com/fraction/ 2. 순환마디에대한수학적논의 3. mathnet의 관련항목 괄호로 감싼 것이 반복되는 순환마디이다. 1/1 = 1.(0) 1/2 = 0.5(0) 1/3 = 0.(3) 1/4 = 0.25(0) 1/5 = 0.2(0) 1/6 = 0.1(6) 1/7 = 0.(14..