때로는 프로그램을 작성할 때 어떤 이유로 든 다른 이유로 소수를 사용해야하는 경우가 있습니다 (예 : 암호화). 때로는 복합 번호도 사용해야한다고 가정합니다. 때때로, 적어도 여기 PPCG에서는 프로그램이 임의의 변경을 처리 할 수 있어야합니다. 흥미로운 PPCG 질문을하기 위해 편리하게 고안된 상황에서 아마도 사용중인 숫자조차도 부패에 저항해야합니다.
정의
합성 수 는 1.보다 큰 두 개의 작은 정수의 제품 즉, 소수가 아닌 정수 ≥ 4 bitflip에 강한 합성 수는 다음과 같이 정의됩니다 : 당신이 그것을 작성하는 경우는,를위한 복합 양의 정수입니다 가능한 최소 비트 수의 이진수로 숫자에서 하나 또는 두 개의 비트를 변경할 수 있으며 숫자는 여전히 복합적입니다.
예
예를 들어 숫자 84를 고려하십시오. 이진수에서는입니다 1010100
. 여기에 2 비트 이상 차이가없는 모든 숫자가 있습니다.
0000100 4 2 × 2 0010000 16 4 × 4 0010100 20 4 × 5 0010101 21 3 × 7 0010110 22 2 × 11 0011100 28 4 × 7 0110100 52 4 × 13 1000000 64 8 × 8 1000100 68 4 × 17 1000101 69 3 × 23 1000110 70 7 × 10 1001100 76 4 × 19 1010000 80 8 × 10 1010001 81 9 × 9 1010010 82 2 × 41 1010100 84 7 × 12 1010101 85 5 × 17 1010110 86 2 × 43 1010111 87 3 × 29 1011000 88 8 × 11 1011100 92 4 × 23 1011101 93 3 × 31 1011110 94 2 × 47 1100100100 10 × 10 1110000112 8 × 14 1110100116 4 × 29 1110101117 9 × 13 1110110118 2 × 59 1111100124 4 × 31
첫 번째 열은 이진수로 된 숫자입니다. 두 번째 열은 10 진수입니다. 세 번째 열에서 알 수 있듯이이 숫자는 모두 복합입니다. 따라서 84는 비트 플립 방지 복합 번호입니다.
작업
언어에 가장 적합한 다음 세 가지 프로그램 또는 기능 중 하나를 작성해야합니다.
- 음수가 아닌 정수 n 을 입력으로 취하고 첫 번째 n 비트 플립 저항 복합 번호를 출력 하는 프로그램 또는 함수입니다 .
- 음이 아닌 정수 걸리는 프로그램이나 함수 N 입력으로, 그리고보다 적은 모든 bitflip 강한 합성 수를 출력하는 N (또는 이하, 선호 또는 동일한 경우, N은 , 예하면 여부를 선택할 수 N bitflip 경우 출력에 포함 내성).
- 입력을받지 않고 모든 비트 플립 저항 복합 번호를 출력하는 프로그램 또는 기능. stdout, lazy list 또는 generator로 인쇄하는 것과 같이 프로그램이 계속 실행되는 동안 출력을 생성 할 수있는 출력 메커니즘을 사용해야합니다. 전체 목록을 계산 한 다음 인쇄 할 수는 없습니다.
테스트 사례
다음은 비트 플립 내성 합성 번호 중 처음 몇 가지입니다.
84, 184, 246, 252, 324, 342, 424, 468, 588, 636, 664, 670, 712, 730, 934, 958
설명
- 비트 플립에 저항해야하는 것은 숫자 만 생성합니다. 이것은 비트 플립에 저항하는 프로그램을 만드는 것에 관한 일이 아닙니다. 프로그램 자체에서 원하는 숫자를 사용하십시오.
- 당신이 출력 한 숫자는 "제로 제로"의 비트 플립에 저항 할 필요는 없습니다. 숫자는 가능한 최소 비트 수에 저장되며 해당 비트 만 뒤집기를 방지해야한다고 상상해보십시오. 그러나 출력하는 숫자의 첫 1 비트는 비트 플립에 영향을받지 않아야합니다.
- 올바른 결과를 생성하는 원하는 알고리즘을 사용하십시오. 당신은 여기 효율성에 표시되지 않습니다.
- 비트 플립에 강한 복합 숫자가 무한히 많다는 것을 증명할 수 있다면 a) 출력 형식에 대한 제한이 해제되고 b) 하드 코딩이 허용됩니다 (단지 계산하는 것보다 더 자세한 설명이 가능하지만). 이 규칙은 대부분 완전성만을위한 것입니다. 나는 그것이 관련성이 있다고 기대하지 않습니다.
승리 조건
이것은 code-golf 이므로 평소와 같이 짧을수록 좋습니다. 또한 평소와 같이 프로그램 길이는 바이트 단위로 측정됩니다.
n
있다면 포함시킬 수n
있습니까? (즉, "n보다 작거나 같게합니까?")