소개 / 배경
A의 최근 논의 에서 크립토 채팅 I가와 / 도움을 논의하기 위해 도전했다 페르마 소수도 테스트 와 카 마이 클 번호. 이 테스트는 a^(p-1) mod p==1
항상 소수 p
에 대해서는 적용되지만 항상 복합 소수 에는 적용되지 않는 전제를 기반으로합니다 . 이제 카 마이클 숫자는 본질적으로 Fermat의 테스트 최악의 적입니다 : 를 얻기 위해 함께 프라임하지 않기 위해 선택 해야하는 숫자입니다 . 이제 공동 프라임이 아닌 경우 본질적으로 다음과 같은 사소한 요소를 발견했습니다.a
p
a^(p-1) mod p!=1
a
p
우리 모두 알고 있듯이 팩토링은 매우 어려울 수 있습니다. 특히 모든 요인이 충분히 큰 경우. 이제 Fermat 테스트가 실제로 자주 사용되지 않는 이유를 알 수 있습니다 (알고리즘이 더 나은 알고리즘이 있음). 공격자 (즉, 숫자를 고려).
이제 우리는 왜이 숫자들이 다소 매혹적인 지 알게 되었으므로 가능한 한 가장 짧은 방법으로 숫자를 생성 할 것이므로, 필요한 경우 생성 코드를 외울 수 있습니다!
Carmichael 번호 는 OEIS 에서 A002997이라고도합니다 .
거기입니다 관련 문제는 이미하지만, 크기 반대로 그들이 속도에 최적화되어 있기 때문에 거기에서 항목은 여기에 경쟁력이있다. 반대 방향에서도 같은 주장이 나옵니다. 여기서 입장하면 크기에 유리한 속도와 균형을 맞출 수 있습니다.
사양
입력
이것은 표준입니다 순서n
입력 값 으로 양수 또는 음수가 아닌 정수 를 사용합니다. n
원하는대로 0 또는 1 인덱싱 될 수 있습니다 (표시하십시오).
산출
원하는대로 출력은 n
-carcar 번호 또는 첫 번째 n
carmichael 번호입니다 (표시하십시오).
사양
정수는 x
카 마이클 수있는 경우이며 경우에만 x
복합이며 모든 정수에 대한 y
로 gcd(x,y)=1
, 그 보유 y^(x-1) mod x==1
.
누가 이겼어?
이것은 코드 골프바이트 단위로 가장 짧은 코드가 승리합니다!
표준 IO 및 허점 규칙이 적용됩니다.
테스트 사례
처음 몇 개의 카 마이클 숫자는 다음과 같습니다.
561,1105,1729,2465,2821,6601,8911,10585,15841,
29341,41041,46657,52633,62745,63973,75361,101101,
115921,126217,162401,172081,188461,252601,278545,
294409,314821,334153,340561,399001,410041,449065,
488881,512461