이 블로그는 더 이상 업데이트되지 않습니다.

최신 내용을 확인하시려면 여기를 클릭해주세요.

프로젝트 오일러 41번

  • 2013/09/17
  • Perl

1부터 n까지의 숫자를 하나씩만 써서 만든 n자리 숫자를 팬디지털(pandigital)이라고 부릅니다.
2143은 4자리 팬디지털인데, 이 수는 동시에 소수이기도 합니다.

n자리 팬디지털 소수 중에서 가장 큰 수는 무엇입니까?

1~9까지 합이 45이고, 1~8까지 합이 36이다. 이들의 합은 모두 3의 배수이고, 각 자릿수의 합이 3의 배수이면, 3의 배수이므로 9자리 팬디지털과 8자리 팬디지털은 3의 배수가 된다.
따라서 7자리 팬디지털 까지만 체크하면 된다.
중복없이 팬디지털을 생성하기 위해 Math::Permute::Array 모듈을 사용했다.