큰 숫자, 작은 숫자

주간 도전 176



Challenge , My solutions

작업 1: 순열 배수




x , x , 2x , 3x , 4x5x 가 서로의 배수가 되는 가장 작은 양의 정수 6x 를 찾는 스크립트를 작성하십시오.

내 솔루션



이것은 더 빠르게 만들기 위해 과도하게 엔지니어링할 수 있는 한 가지 과제입니다. 해결책을 순식간에 찾을 수 있다는 점을 고려하면 이것은 필요하지 않습니다.

예를 들어 1,666 이후에 가능한 다음 솔루션은 100,000입니다. 1667 × 6은 원래 숫자의 순열일 수 없는 5자리 숫자가 됩니다.

숫자가 순열인지 확인하는 가장 쉬운 방법은 단순히 숫자를 숫자로 정렬하는 것입니다. Python에서는 ''.join(sorted(str(num))) 로 이 작업을 수행할 수 있습니다. Whilejoin '', sort split //, $num은 Perl에서도 비슷한 일을 합니다.

많은 도전 과제와 마찬가지로 저는 1부터 시작하여 해결책을 찾을 때까지 증가하는 카운터를 가지고 있습니다. 각 숫자에 대해 2에서 6을 곱한 숫자가 원래 숫자의 순열인지 파악하고 그렇지 않은 경우 내부 루프를 종료합니다.

마지막으로 솔루션을 찾으면 인쇄하고 main() 함수를 종료합니다.

알고 계셨나요? 솔루션 (142,857)에는 고유한 Wikipedia page이 있습니다.




$ ./ch-1.py 
142857

$ ./ch-1.pl
142857


작업 2: 뒤집을 수 있는 숫자





100 미만의 모든 가역수를 찾는 스크립트를 작성하세요. 숫자와 그 역수의 합이 홀수만 있는 경우 숫자를 가역수라고 합니다.

내 솔루션



이것은 비교적 간단한 도전 과제입니다. 1부터 99까지 세고 숫자가 뒤집을 수 있는 숫자인 경우 solutions 목록에 추가합니다.

파이썬에는 정수를 뒤집는 쉬운 방법이 없기 때문에 문자열로 변환하고 int(str(num)[::-1]) 를 사용하여 다시 정수로 변환합니다. Perl에서는 reverse 메서드를 사용하면 됩니다. 숫자가 홀수인지 확인하기 위해 정규식^[13579]+$과 비교합니다.

그런 다음 solutions 목록의 모든 숫자를 인쇄합니다.




$ ./ch-2.py 
10, 12, 14, 16, 18, 21, 23, 25, 27, 30, 32, 34, 36, 41, 43, 45, 50, 52, 54, 61, 63, 70, 72, 81, 90

$ ./ch-2.pl 
10, 12, 14, 16, 18, 21, 23, 25, 27, 30, 32, 34, 36, 41, 43, 45, 50, 52, 54, 61, 63, 70, 72, 81, 90

좋은 웹페이지 즐겨찾기