Số nguyên tố XOR âm


9

Khoảng một năm trước, bạn được yêu cầu tìm các số nguyên tố XOR . Đây là những số có các yếu tố duy nhất là 1 và chính chúng khi thực hiện phép nhân XOR trong cơ sở 2 . Bây giờ sẽ gia vị mọi thứ một chút.

Chúng ta sẽ tìm các số nguyên tố XOR trong cơ sở -2

Chuyển đổi sang cơ sở -2

Cơ sở -2 là rất nhiều như mọi cơ sở khác. Vị trí bên trái nhất là vị trí 1s (1 = (-2) 0 ), bên cạnh đó là vị trí -2s (-2 = (-2) 1 ), bên cạnh đó là vị trí 4s (4 = (-2 ) 2 ), vân vân và vân vân. Sự khác biệt lớn là số âm có thể được biểu diễn trong cơ sở -2 mà không có bất kỳ dấu âm nào.

Dưới đây là một số chuyển đổi ví dụ:

Decimal | Base -2
-----------------
 6      |   11010
-7      |    1001
 12     |   11100
-15     |  110001

Bổ sung XOR trong Cơ sở -2

Bổ sung XOR trong Base -2 khá giống với bổ sung XOR trong nhị phân. Bạn chỉ cần chuyển đổi số thành Base -2 và XOR mỗi chữ số tại chỗ. (Điều này giống như bổ sung mà không mang theo)

Dưới đây là một ví dụ được thực hiện qua từng bước:

(Chúng tôi sẽ sử dụng biểu tượng +'để biểu thị phép cộng Base -2 XOR)

Bắt đầu ở cơ sở 10:

6 +' -19

Chuyển đổi sang cơ sở -2:

11010 +' 10111

Thêm chúng mà không mang theo:

   11010
+' 10111
---------
   01101

Chuyển đổi kết quả của bạn trở lại cơ sở 10:

-3

Phép nhân XOR trong Cơ sở -2

Một lần nữa phép nhân XOR trong cơ sở -2 gần giống với phép nhân XOR trong hệ nhị phân. Nếu bạn không quen thuộc với phép nhân XOR trong cơ sở 2, có một lời giải thích tuyệt vời ở đây tôi khuyên bạn nên xem xét điều đó trước.

Phép nhân XOR trong Cơ sở -2 giống như thực hiện phép nhân dài trong cơ sở -2 ngoại trừ khi đến bước cuối cùng thay vì cộng tất cả các số với truyền thống +bạn sử dụng như +'chúng tôi đã xác định ở trên.

Dưới đây là một ví dụ được thực hiện dưới đây:

Bắt đầu bằng số thập phân:

8 *' 7

Chuyển đổi sang Cơ sở -2:

11000 *' 11011

Thiết lập phân chia dài:

   11000
*' 11011
---------

Nhân số thứ nhất với mỗi vị trí trong giây

      11000
*'    11011
------------
      11000
     11000
        0
   11000
  11000

Thêm tất cả các kết quả bằng cách sử dụng bổ sung cơ sở -2 XOR

       11000
*'     11011
-------------
       11000
      11000
         0
    11000
+' 11000
-------------
   101101000

Chuyển đổi kết quả trở lại thập phân:

280

Các thách thức

Thách thức của bạn là xác minh xem một số có phải là số nguyên tố XOR trong cơ sở -2 hay không. Một số là một số nguyên tố XOR trong cơ sở -2 nếu cặp số nguyên duy nhất nhân với nó trong cơ sở là 1 và chính nó. (1 không phải là số nguyên tố)

Bạn sẽ nhận được một số và xuất ra một boolean, trung thực nếu đầu vào là một số nguyên tố XOR trong cơ sở -2 sai.

Các giải pháp sẽ được tính bằng byte với việc đạt được số byte thấp nhất làm mục tiêu.

Các trường hợp thử nghiệm

Sau đây là tất cả các số nguyên tố XOR trong cơ sở -2:

-395
-3
-2
 3
 15
 83

Sau đây không phải là các số nguyên tố XOR trong cơ sở -2:

-500
-4
 0
 1
 258
 280

258dường như bằng nhau-2 *' -129 = 10 *' 10000011
JungHwan Min

@JungHwanMin xấu của tôi rằng một người đáng lẽ phải ở trong danh mục khác. Tôi xin lỗi nếu điều này đã gây ra cho bạn bất kỳ rắc rối.
Ad Hoc Garf Hunter

Câu trả lời:


3

Toán học, 156 101 byte

IrreduciblePolynomialQ[FromDigits[{#}//.{a_,p___}/;a!=1&&a!=0:>{-⌊a/2⌋,a~Mod~2,p},x],Modulus->2]&

Như đã nêu ở đây , điều này hoạt động vì phép nhân XOR về cơ bản là phép nhân trong vòng đa thức F_2.

Giải trình

{#}//.{a_,p___}/;a!=1&&a!=0:>{-⌊a/2⌋,a~Mod~2,p}

Bắt đầu với {input}. Liên tục thay thế một số a(trừ 0 và 1) bằng amod 2 và trả trước -floor ( a/ 2), cho đến khi số này không thay đổi. Điều này tính toán đầu vào trong cơ sở -2.

FromDigits[ ... ,x]

Tạo một đa thức bằng cách sử dụng các chữ số của số -2 cơ sở, sử dụng xlàm biến. ví dụ: {1, 1, 0}>x^2 + x

IrreduciblePolynomialQ[ ... ,Modulus->2]

Kiểm tra xem đa thức kết quả là không thể giảm được, với mô đun 2.

Phiên bản cũ (156 byte)

If[#==1,1,Outer[FromDigits[BitXor@@(#~ArrayPad~{i++,--l}&)/@Outer[i=0;l=m;1##&,##],-2]&,k=Tuples[{0,1},m=Floor@Log2[8Abs@#~Max~1]]~Drop~{2},k,1,1]]~FreeQ~#&

Danh sách các số nguyên tố

Dưới đây là danh sách các số nguyên tố cơ bản -2 XOR trong khoảng -1000 đến 1000 (pastebin)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.