모든 정수 mod q를 생성하는 숫자 찾기


9

정수가 모듈로 고려 q경우 q소수, 발전기 어떤 정수 1 < x < q있도록 x^1, x^2, ..., x^(q-1)모든 커버 q-1정수의 사이 1q-1. 예를 들어, 정수 모듈로 7 (우리는로 작성 Z_7)을 고려하십시오 . 그런 다음 3, 3^2 mod 7 = 2, 3^3 = 27 mod 7 = 6, 3^4 = 81 mod 7 = 4, 3^5 = 243 mod 7 = 5, 3^6 = 729 mod 7 = 1모든 값을 3, 2, 6, 4, 5, 1포함 1..6하고 필요에 따라 모든 정수 를 포함합니다.

이 작업은의 입력을 받아서 n생성기를 출력하는 코드를 작성 하는 것입니다 Z_n. 물론이를 위해 내장 또는 라이브러리를 사용할 수 없습니다.

코드 성능에 대한 유일한 제한은로 완료하기 위해 코드를 테스트해야한다는 것입니다 n = 4257452468389.

의 힘 을 2^n 의미 2합니다 n. 그것은 ^지수를 나타냅니다.


흠 ... 1 < x < q도전이 훨씬 쉬워집니다.
Outgolfer Erik

@EriktheOutgolfer 무슨 말인지 잘 모르겠습니다. 그것들은 0 또는 1이 아닌 다른 모든 정수입니다.

나는 많은 사람들이 생각하거나 PPCG에 대한 비활성 순간보다 쉽다는 것을 의미합니다.
Outgolfer Erik

3
그러나 사람들이 그것을 완성하기 위해 그것을 테스트하도록 요구하는 것은 불필요하다고 생각합니다 ... 기본적으로 티오는 단지 메모리 오류 일 것입니다.
Outgolfer Erik

@Lembik 특정 숫자에 대한 생성기가없는 경우가 있습니까? 일부 테스트 사례가 좋을 것입니다.
Mr. Xcoder

답변:


13

Pyth, 16 15 바이트

f-1m.^T/tQdQPtQ

테스트 스위트

p가 입력이면 g ^ (p-1) = 1 mod p임을 알 수 있으므로 더 작은 a에 대해 g ^ a! = 1 mod p인지 확인하면됩니다. 그러나 a는 p-1의 요소이어야하며, 그 속성을 가진 a의 배수도 그 속성을 가지므로 g ^ ((p-1) / q) 만 확인하면됩니다! p-1의 모든 소인수 q에 대해 1 mod p 그래서 우리는 모든 정수 g를 검사합니다.

설명:

f-1m.^T/tQdQPtQ
f                  Return the first value T such that the following is truthy:
            PtQ    Take the prime factorization of the input - 1.
   m               Map those prime factors to
       /tQd        Take the input - 1 divided by the factor
    .^T    Q       Raise T to that exponent mod input,
                   performed as modular exponentiation, for performance.
 -1                Check that 1 is not found among the results.

꽤 멋진!

코드가 인수 분해를 수행합니까?

@Lembik 그것은 ( PtQ부분) 않습니다.
Outgolfer Erik


-3
%MATLAB CODE
%Program to generate Z_n for an integer n
n = input('Enter a number to find modulo')
q = input ('Enter a prime number greater than the number you wished to find modulo')
if n>=q 
   fprintf('Error')
   exit(1)
end
for R=1:q-1
    fprintf(rem(n.^R, q))
    fprintf('\n')
end

1
이것은 올바른 문제를 해결하지 못합니다. 예를 들어, 코드는 하나의 입력을 받고 하나의 출력을 제공해야합니다.

1
또한이 코드는 전혀 골치가 없습니다. 골프 코드는 가능한 짧아야하므로 등호 등의 입력 텍스트와 공백을 제거 할 수 있습니다.
동지 SparklePony

3
@ComradeSparklePony 올바른 문제를 해결하지 못하는 첫 번째 문제를 먼저 해결해야한다고 생각합니다. :)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.