오각수는 Pn = n (3n − 1)/2 라는 공식으로 구할 수 있고, 처음 10개의 오각수는 다음과 같습니다.
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...
위에서 P4 + P7 = 22 + 70 = 92 = P8이 됨을 볼 수 있습니다. 하지만 두 값의 차인 70 − 22 = 48 은 오각수가 아닙니다.
합과 차도 모두 오각수인 두 오각수 Pj, Pk 에 대해서, 그 차이 D = | Pk − Pj | 는 가장 작을 때 얼마입니까?
위키피디아에 오각수를 찾아보면 오각수를 판별하는 공식이 있다.
어떤 수 n에 대해서 x= sqrt(24*n + 1) + 1 / 6에 나오는 x에 대해
x == int(x)를 만족하면 n은 오각수이다.
이것으로 오각수를 판별하고, 차가 가장 작으려면 제일 근접한 두 오각수이어야 하므로
pent_list에 오각수를 하나씩 생성해나가면서 합과 차가 모두 오각수인 것을 찾는다.
가장 먼저 찾아지는 것이 가장 작은 차.
Ruby
Perl