어떤 파일을 특정 크기의 파일 조각으로 나눌때 필요한 파일 조각 갯수를 구하는 공식의 증명 어떻게 해야죠?

emptynote의 이미지

어떤 파일을 특정 크기의 파일 조각으로 나눌때 필요한 파일 조각 갯수를 구하는 공식의 증명 어떻게 해야죠?

이렇때 공부 않하고 나이만 먹었구나 그런 생각이 듭니다.

(정수){(파일 크기 + "파일 조각 크기" - 1) / "파일 조각 크기"} = 필요한 파일 조각 갯수

공식처럼 외운거라 막상 증명해 보겠다고 노트에 끄졌였지만 자신이 없네요.

정리1) 파일 조각크기, 파일 크기, 필요한 파일 조각 갯수는 양의 정수이다.

정리2) 나머지 = 필요한 파일 조각 갯수 * 파일 조각 크기 - 파일 크기

정리3) 0<= 나머지 < 파일조각 크기

정리4) 나머지 = 파일 조각크기 - 1 일 경우 위의 정리들을 만족함

비겁한 변명을 하자면 저는 수학과가 아닙니다.

mirheekl의 이미지

a = 파일크기
b = 조각크기
c = 개수

이렇게 쳤을 때, 조건상 b * c 에서 a를 뺐을 때 b보다는 작아야 합니다. (b보다 같거나 크면 파일은 넣을 수 있으나 잉여공간이 생김)
그리고 0보다는 같거나 커야 되겠죠, 안그러면 전체 컨텐츠를 담을 수 없으니.. 따라서 0 <= bc - a < b가 성립합니다. 이걸 전체적으로 b로 나눕니다. b는 양의 정수이므로 부등호는 안바뀝니다.

0 <= c - a/b < 1 즉
fn(c - a/b) = 0 이라는 뜻입니다.
여기서 fn 함수는 실수를 받아들여서 소숫점을 버리는 것을 의미.

이제 본문의 공식을 다시 적어보면.. fn{(a + b - 1)/b)} = c 입니다. 양변에 fn의 역함수를 먹이면..

(a + b - 1) / b = c + x 가 됩니다. (0 <= x < 1; x가 음수가 못되는 이유는 그럴경우 fn을 먹였을때 c-1이 되기 때문)
-> a/b + 1 - 1/b = c + x

이걸 먼저 구한 식과 비슷하게 짜맞추면..

c - a/b = 1 - 1/b - x 가 됩니다.

양변에 fn을 다시 먹이면..

fn(c - a/b) = fn(1 - 1/b - x)가 됩니다.

좌변이 0임은 위에서 보여주었으므로 이제 남은건 우항이 0이라는 것을 증명하는 겁니다.

그런데 여기서 b는 양의 정수라 했습니다. 따라서 (1/b)는 1보단 같거나 작고 0보단 크게 됩니다. 즉, 1-1/b는 0보다는 크거나 같고 1보다는 작게 됩니다. x도 마찬가지죠. 결국 우변 자체가 -1과 1 사이(두 값 자체는 포함X)에서만 놀게 됩니다. 따라서 fn을 씌우면 0이 됩니다. 0 = 0이므로 증명 끝.

아마 분명 틀렸을겁니다. ㅎㅎ 혹시 도움이 될까 해서 적어봅니다.

--

emptynote의 이미지

개인 프로젝트 진행중에 파일 송수신 기능을 만들었는데,

아무 생각없이 인용한 공식을 남들한테 어떻게 납득을 시킬 수 있을까?

불현듯 이런 생각이 나서 쓴 글입니다.

설명해 주신 내용 이해가 쉬워 감사한 마음으로 읽어 보았습니다.

제 부족함을 볼 수 있는것이 저는 1.2 는 1이다 식으로 말로 때우는식인데 그것이 fn 이라는 함수 표기로 표현이 되는군요.