brandon94   4년 전

솔루션을 찾아보니 원하는 숫자의 갯수를 구해주는 함수를 만들어 주더라구요.

그런데 여기서 제가 궁금한건

예를들어 10!에서 2의 개수를 구할때
코드에 따르면(i //= j) 10을 2로 나눈 몫을 2로 나누고 또 그 몫을 2로 나누어주는걸 반복해서
더이상 나누어질 때까지 나누고 그 모든 몫들을 더해준 것이 10!에 있는 2의 개수인건데 
왜 그 몫들을 더해준건이 2의 개수가 될 수 있는건지 이해가 안됩니다... ㅜ

혹시 이를 설명해주실 분이 계실까요?? ㅠ

dustmqdyd01   4년 전

예를 들어 10!에 곱해진 2의 개수를 구할거에요.

10!에서 2가 곱해져 있는 수들은 2,4,6,8,10이 있습니다.

2가 1번 곱해져 있는 수는 2,6,10

2가 2번 곱해져 있는 수는 4

2가 3번 곱해져 있는 수는 8이므로,

2의 개수로 표현하면, 2,6,10은 1 , 4는 2 , 8은 3

10//2를 하면 2,4,6,8,10이 더해지고

10//4를 하면 4,8이 더해지고

10//8을 하면 8이 더해집니다.

약간 이런 느낌입니다.

dustmqdyd01   4년 전

여기서 더해진다는 말은 카운팅 된다는 얘기입니다!

즉, 2^n꼴의 배수를 계속해서 카운팅 하는 것입니다.

설명이 이해 되셨으면 좋겠네요.. 

brandon94   4년 전

와 완전 이해됐습니다!! 감사합니다!! 

어림 짐작으로만 생각하고 있었는데, 완전 깔끔히 이해됐네요!!

댓글을 작성하려면 로그인해야 합니다.