2014-02-10 2 views
0

Что остальное, когда 30^74 делится на 57?Остаток при разделении большого числа

Я знаю, как правило, для решения такой проблемы, вы бы использовали Маленькую теорему Ферма, но в этом случае 57 не является простым числом, поэтому я не уверен, как подойти к этому. Есть идеи?

+0

Разделите дивиденд и делитель на 3, и вы получите простой делитель. – PSkocik

+0

45 (я действительно надеялся, что это будет 42). http://ideone.com/mpZKuj – Henrik

+0

Возможный дубликат [Вычислить модуль числа при мощности certan (число при этой мощности довольно велико)] (http://stackoverflow.com/questions/5433992/calculate- the-module-of-a-number-at-a-certan-power-the-number-at-that-power-is) – ja72

ответ

2

30^74 по модулю 57 = (3^74 * 10^74) по модулю 3 * 19 = 3 * [(3^73 * 10^74) по модулю 19]

и

(3^73 * 10^74) mod 19 = (3^(18 * 4) * 3 * 10^(18 * 4) * 10^2) mod 19

теперь по малой теореме Фермста (m^р-1) по модулю р = 1):

(3^73 * 10^74) по модулю 19 = (3 * 10^2) по модулю 19 = 300 мод 19 = 15

поэтому

30^74 мод 57 = 3 * 15 = 45


Основная реализация модульного метода возведения в степень, чтобы получить остаток:

long modular_pow(long base, long exponent, long modulus) { 
    long c = 1; 
    for (long e_prim = 0; e_prim < exponent; ++e_prim) { 
     c = (c * base) % modulus; 
    } 
    return c; 
} 

Однако реализация показана @Vikram Бхат является более эффективным.

1

Использование модульного возведения в степень: -

modexp(a,pow) = (a*modexp(a,pow-1))%p 

Faster модульная экспоненцирование: -

public static long modexp(long a,long pow,long p) { 

     if(pow==0) { 
      return(1); 
     } 

     long t = modexp(a,pow/2,p); 
     t = (t*t)%p; 

     if(pow%2==1) { 
      t = (t*a)%p; 
     } 

     return(t); 

    } 

вызова: -modexp(30,74,57)

Время Сложность:O(log(pow))

+0

вы сами написали или, возможно, можете указать ссылку на вывод математики? – 4pie0

+0

@ piotruś Я написал сам, используя его в RSA. Вот ссылка для доказательства http://en.wikipedia.org/wiki/Modular_exponentiation –

Смежные вопросы