목록알고리즘 (2)
올해는 머신러닝이다.
- 중국인의 나머지 정리- 물건의 개수를 모른다. 하지만 우리는 아래의 정보를 알고 있다. 3으로 나눈 나머지는 1이고 5로 나눈 나머지는 1이며 7로 나눈 나머지는 2이다. 물건의 개수는 몇개인가?? 지구상 풀지못하는 최고의 난제인줄 알았다. 답 : 16 물론 수가 작아서 1부터 해보면 16을 쉽게 찾을 수도 있지만 수가 크다면 일일히 해보는 방법은 수학적으로도 무식한 방법일 것이다. 인터넷을 돌아다니다 얻은 풀이방법들이다. 1. 3으로 나누면 1이 남는 식을 3x+1라고 한다.2. x의 범위는 0부터 시작이므로 1,4,7,9,13,16,19,22,25,28,31....3. 여기서 5로 나눈 나머지가 1인 수들을 찾는다. 1,16,31....4. 이 수중에서 7로 나눈 나머지가 2..
확장된 유클리드 JAVA 소스 /** * 확장된 유클리드 알고리즘(Extend Euclid Function) bx mod p = 1 (bx + kp = 1) * 일때 x를 구한다. * * @param b * in GF(p) * @param p * 소수 * @return x */ public static long exEuclid(long b, long p) { long c = p; long d = b; long x = 0; long y = 1; while (d != 1) { long q = c / d; long e = c - d * q; long w = x - y * q; c = d; d = e; x = y; y = w; } if (y < 0) { y += p; } return y; } public cla..