프라임 타임!

Mar 01 2023
내 친구 Doug가 태양계 미터법 시계에 대한 기능 요청을 했습니다. 표시된 시간이 소수일 때 알려주는 표시기를 추가하세요. 이것은 소수에 대한 나의 집착과 이 프로젝트를 끝없이 계속하고 싶은 욕망과 일치합니다.

내 친구 Doug가 태양 측정 시계 에 대한 기능 요청을 했습니다 . 표시된 시간이 소수일 때 알려주는 표시기를 추가합니다. 이것은 소수에 대한 나의 집착과 이 프로젝트를 끝없이 계속하고 싶은 욕망과 일치합니다.

그래서 당연히 했습니다.

나는 이 목적을 위해 hh:mm 시간을 단일 숫자로 간주하지 않기로 결정했습니다. 시간과 분은 양을 다르게 세는 것이므로 스칼라로 간주하는 것은 옳지 않은 것 같습니다. 그러나 태양과 지역 미터법 시간은 모두 스칼라로 의미가 있습니다.

나는 시작할 때 표시 가능한 최대 수(9999)보다 작은 모든 소수를 계산하고 희소 벡터에 저장하고 시간이 소수인지 확인하기 위해 필요에 따라 빠른 조회를 수행할 것이라고 생각했습니다. Doug와 저는 접근 방식에 대해 이야기했습니다. 그는 Elon이 우리 모두가 살고 있는 시뮬레이션을 변경하면 소수가 변경될 수 있으므로 전원을 켤 때 계산하는 것이 가장 안전할 것이라고 추론했습니다. 말이 되네요.

불행하게도 내 Arduino Uno Wifi Rev2 보드에는 Sieve of Eratosthenes 알고리즘의 데이터 구조와 내가 사용하고 싶었던 조회 벡터를 위한 충분한 메모리가 없습니다. Arduino 컴퓨팅 플랫폼의 흥미로운 점 중 하나는 리소스가 제한적이라는 것입니다. 고등학생 때 Apple II로 애플리케이션을 작성하던 시절로 돌아가게 됩니다. 모든 것을 작고 효율적으로 만드는 데 주의를 기울여야 합니다.

10,000의 제곱근 다음의 첫 번째 소수까지 소수로 나누어지는 것을 확인하여 최대 10,000까지의 소수를 결정할 수 있습니다. 소수성을 결정하기 위한 요소 계산에는 충분하지 않습니다. 스스로 알아내는 것이 재미있기 때문에 여기서는 정수론을 설명하지 않겠습니다.

배열 [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79 , 83, 89, 97, 101]을 시계에 입력하고 4자리 7세그먼트 디스플레이 중 하나에 미터법 시간을 칠할 때마다 분할 가능성을 테스트합니다. 이것은 실제로 매우 효율적입니다. 숫자의 절반은 2에 대한 테스트 등으로 녹아웃됩니다.

시간이 프라임일 때 마지막 숫자 다음에 소수점을 켭니다.

로컬 메트릭 시간이 중요합니다!

나는 그것이 황금 시간대일 때 알아차리는 것을 즐긴다. 표시되는 태양 및 로컬 미터법 시간이 모두 프라임인 경우가 자주 발생합니다. 그것은 숫자 이론 엔돌핀의 이중 충격입니다!