Как найти три последние цифры числа

Найти последние три десятичные цифры означает нахождение остатка по модулю 1000. Это значит, что 2003 можно заменить на 3 в силу свойств сравнений, которые можно возводить в натуральную степень.

Поскольку $%varphi(1000)=varphi(2^3)varphi(5^3)=(2^3-2^2)(5^3-5^2)=400$%, из теоремы Эйлера следует, что $%3^{400}equiv1pmod{10^3}$%. Следует установить, какой остаток от деления на 400 даёт показатель степени, то есть число $%2002^{2001}$%. Если он равен $%r$%, то показатель степени имеет вид $%400q+r$%, и тогда $%3^{400q+r}equiv(3^{400})^q3^requiv3^rpmod{10^3}$%, и задача сводится к нахождению последних трёх цифр числа $%3^r$%.

Заметим, что $%2002equiv2pmod{400}$%, поэтому достаточно найти остаток от деления на 400 для числа $%2^{2001}$%. Здесь теорему Эйлера напрямую уже не применить, так как 400 и 2 не взаимно просты. Однако $%400=2^4cdot5^2$%, поэтому можно отдельно найти остатки от деления на 16 и на 25. В первом случае ответ очевиден: остаток равен нулю, так как $%2^{2001}$% заведомо делится на $%2^4$%. А остаток от деления на 25 можно найти уже по теореме Эйлера, пользуясь тем, что $%varphi(25)=20$%. Тогда $%2^{20}equiv1pmod{25}$%, откуда $%2^{2001}=(2^{20})^{100}cdot2equiv2pmod{25}$%.

Таким образом, число $%2^{2001}$% при делении на 16 даёт в остатке 0, а при делении на 25 даёт в остатке 2. Из этих данных, в силу китайской теоремы об остатках, однозначно определяется остаток от деления на $%400=16cdot25$%. Нас интересует число вида $%16m$%, где $%m$% целое, такое что $%16mequiv2pmod{25}$%. Сокращаем сравнение на 2, затем домножаем на 3, откуда $%-mequiv24mequiv3pmod{25}$%. Тем самым, $%mequiv22pmod{25}$%, и $%16mequiv16cdot22equiv352pmod{400}$%.

Исходная задача в итоге свелась к нахождению последних трёх цифр числа $%3^{352}$%. Здесь пока что не очень удобно проводить вычисления, поэтому имеет смысл заметить, что $%10^3=2^3cdot5^3$%, сводя задачу к нахождению остатков от деления на 8 и на 125.

Первая из задач решается совсем легко, потому что $%3^{352}equiv9^{176}equiv1pmod8$% с учётом того, что 9 сравнимо с 1. Остаток от деления на 8, таким образом, равен 1. Для нахождения остатка от деления на 125 достаточно заметить, что $%varphi(125)=100$%, и тогда мы можем перейти к числу $%3^{52}$%, “списывая” в показателе число, кратное значению функции Эйлера. Чтобы не возводить число в такую высокую степень, можно заметить, что речь идёт о числе $%(3^4)^{13}$%, то есть $%81^{13}$%. Здесь уже остаток вычисляется сравнительно легко при помощи последовательных возведений в квадрат: $%81^2equiv6561equiv61pmod{125}$%; $%81^4equiv61^2equiv3721equiv96pmod{125}$%; $%81^8equiv96^2equiv9216equiv91pmod{125}$%. Отсюда $%81^{13}equiv81^8cdot81^4equiv81^1equiv91cdot96cdot81equiv111cdot81equiv116pmod{125}$%.

Теперь осталось найти число вида $%125n+116$%, дающее остаток 1 от деления на 8. Рассматривая числа указанной арифметической прогрессии, видим, что число 241 обладает нужным свойством. Таким образом, $%3^{352}equiv241pmod{10^3}$%, то есть искомыми тремя последними цифрами будут 241.

I wish to change an integer such as 23457689 to 689, 12457245 to 245 etc.

I do not require the numbers to be rounded and do not wish to have to convert to String.

Any ideas how this can be done in Python 2.7?

vaultah's user avatar

vaultah

43.5k12 gold badges113 silver badges143 bronze badges

asked Feb 17, 2015 at 20:26

Luke Gatt's user avatar

Use the % operation:

>>> x = 23457689
>>> x % 1000
689

% is the mod (i.e. modulo) operation.

answered Feb 17, 2015 at 20:29

Warren Weckesser's user avatar

Warren WeckesserWarren Weckesser

109k19 gold badges189 silver badges209 bronze badges

0

To handle both positive and negative integers correctly:

>>> x = -23457689
>>> print abs(x) % 1000
689

As a function where you can select the number of leading digits to keep:

import math
def extract_digits(integer, digits=3, keep_sign=False):
    sign = 1 if not keep_sign else int(math.copysign(1, integer))
    return abs(integer) % (10**digits) * sign

The constraint to avoid converting to str is too pedantic. Converting to str would be a good way to do this if the format of the number might change or if the format of the trailing digits that need to be kept will change.

>>> int(str(x)[-3:])
              ^^^^^ Easier to modify this than shoe-horning the mod function.

answered Feb 17, 2015 at 20:31

ely's user avatar

elyely

73.9k34 gold badges146 silver badges226 bronze badges

3

0 / 0 / 0

Регистрация: 08.04.2020

Сообщений: 22

1

Найти последние три цифры числа

10.12.2020, 13:25. Показов 3554. Ответов 13


Студворк — интернет-сервис помощи студентам

Требуется найти последние три цифры числа 13^3998
подскажите как делать



0



1451 / 920 / 250

Регистрация: 05.10.2014

Сообщений: 4,553

10.12.2020, 14:09

2

Проще всего в экселе.
Если вручную, то теорема Эйлера по модулю 1000



0



0 / 0 / 0

Регистрация: 08.04.2020

Сообщений: 22

10.12.2020, 14:24

 [ТС]

3

а можете объяснить как по Эйлеру делать? смотрел примеры и ничего не понял



0



1451 / 920 / 250

Регистрация: 05.10.2014

Сообщений: 4,553

10.12.2020, 14:31

4

Цитата
Сообщение от senryx
Посмотреть сообщение

можете объяснить как по Эйлеру делать?

Да, напишите теорему Эйлера



0



0 / 0 / 0

Регистрация: 08.04.2020

Сообщений: 22

10.12.2020, 14:33

 [ТС]

5

a^y(m)=1 mod (m) где y(m) функция Эйлера



0



1451 / 920 / 250

Регистрация: 05.10.2014

Сообщений: 4,553

10.12.2020, 14:45

6

берем m=1000



0



0 / 0 / 0

Регистрация: 08.04.2020

Сообщений: 22

10.12.2020, 14:53

 [ТС]

7

а дальше что?



0



Эксперт по математике/физике

8721 / 6319 / 3395

Регистрация: 14.01.2014

Сообщений: 14,503

10.12.2020, 15:13

8

Находим y=23-1*(2-1)*53-1*(5-1)=1000, тогда по теореме Эйлера 134000=1 (mod 1000). Значит, достаточно решить уравнение 132*х=1 (mod 1000), решение которого x=929 – это ответ.



0



0 / 0 / 0

Регистрация: 08.04.2020

Сообщений: 22

10.12.2020, 15:17

 [ТС]

9

спасибо огромное



0



Эксперт по математике/физике

3968 / 2948 / 893

Регистрация: 19.11.2012

Сообщений: 6,061

10.12.2020, 16:12

10

Цитата
Сообщение от mathidiot
Посмотреть сообщение

решение которого

А если применить бином Ньютона, то не придется ни функции Эйлера, ни обратный в кольце вычетов искать:
https://www.cyberforum.ru/cgi-bin/latex.cgi?small13^{3998}=(170-1)^{1999}equiv-1+170cdot1999-170^2cdotfrac{1999cdot1998}{2}equiv-1-170-170^2cdot999equiv-1-170+28900equiv900-171=729 (mod 1000)
Заодно и ответ уточняется 729.



1



Эксперт по математике/физике

8721 / 6319 / 3395

Регистрация: 14.01.2014

Сообщений: 14,503

10.12.2020, 16:53

12

Первоначально эта тема появилась в разделе: Численные методы, возможно, требовалось найти последние три цифры с помощью какой-то программной среды. Вот так можно это сделать в Mathcad

Миниатюры

Найти последние три цифры числа
 



0



1451 / 920 / 250

Регистрация: 05.10.2014

Сообщений: 4,553

10.12.2020, 17:20

13

Цитата
Сообщение от kabenyuk
Посмотреть сообщение

Заодно и ответ уточняется 729.

Минус по дороге потерялся: 1100-171=929



1



Эксперт по математике/физике

3968 / 2948 / 893

Регистрация: 19.11.2012

Сообщений: 6,061

10.12.2020, 17:23

14

Цитата
Сообщение от mathidiot
Посмотреть сообщение

А Вольфрам утверждает

Дело конечно не в том, что Вольфрам утверждает, а надо исправить опечатку:
https://www.cyberforum.ru/cgi-bin/latex.cgi?small13^{3998}=(170-1)^{1999}equiv-1+170cdot1999-170^2cdotfrac{1999cdot1998}{2}equiv-1+170cdot1999-170^2cdot1999cdot999equiv-1-170-170^2equiv-1-170-28900=-900-171=-1071equiv-71equiv929(mod1000)
Ответ подтверждается. Ура.
Да, исправляю.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

10.12.2020, 17:23

Помогаю со студенческими работами здесь

Найти две последние цифры числа, используя теорему Эйлера
Найти две последние цифры числа 3^219 , используя теорему Эйлера
Буду очень благодарна!

Набирая номер телефона, абонент забыл три последние цифры
Набирая номер телефона, абонент забыл три последние цифры и, помня лишь, что эти цифры различны,…

Две последние цифры числа
Найти две последние цифры числа 939^165

Найдите две последние цифры числа 11^203
Найдите две последние цифры числа 11^203

найти степень числа N, у которого три последние цифры одинаковые
найти степень числа N, у которого три последние цифры одинаковые

Найти степень числа N, у которой три последние цифры одинаковы
Решить задачу, используя цикл while или repeat:
Найти степень числа N, у которой три последние…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

14

Мне тоже интересно, но данный раздел я не изучал.

Ну тогда нужно начать решать с задачек попроще :)
Начать с определения операций по модулю, обратного элемента по модулю и т.д.
То есть познакомиться с такой алгебраической структурой.

Дальнейшепе на процентов 50% будет, я думаю, совсем незнакомо и непонятно, но просто пропускай, не читая )

phi(100) = 40.

Это функция Эйлера – если совсем строго – то это число классов в мультипликативной группе Z*m. Применительно к теории чисел – числа, взаимнопростые с m и с меньшие m образуют мультипликативную группу по модулю m. А значит – phi(m) – число взаимопростых с m и меньшие m.

Интересное важное свойство: если (p,m)=1 и (t,m)=1, то их произведение тоже будет взаимопросто с m: (pt,m)=1
Можно проверить, что это действительно группа (алгебраическая структура с некоторыми свойствами).

Определение: число p взаимнопросто с m – значит их НОД(p,m)=1, или другая запись (p,m)=1
(НОД – наибольший общий делитель)

Для простого числа phi(p) = p-1, потому что все числа, меньшие с p, будут взаимопросты с простым числом.
Для составного – другая формула, предлагаю ее написать Pavlissimus :)

В частности, phi(100) = 40 – существует только 40 чисел, взаимопростых с 100. Я их даже перечислю:

1 3 7 9 11 13 17 19 21 23
27 29 31 33 37 39 41 43 47 49
51 53 57 59 61 63 67 69 71 73
77 79 81 83 87 89 91 93 97 99

Их ровно 40 и операция умножения по модулю не выводит из этого множества:
Пример: 43*79 = 3397 = 97 mod 100
97 – уже есть в этом списке.
Так на самом деле будет с любыми двумя числами.

Теорема Эйлера, если (r,m)=1, то r^phi(m) = 1 mod m

Если взять любое число из списка, то r^40 = 1 mod 100
Пример: 9^40 = 147808829414345923316083210206383297601 = 1 mod 100

����:    [

���������� �������� (������)

]
���������: 2+
������: 6,7,8

� �������

�������� �����������

�������

�����   a) 3 ��������� �����;   �) 6 ��������� ���� �����  1999 + 2999 + … + (106 – 1)999.

�������

�)  k999 + (106k)999k999 + (– k)999 = 0 (mod 106);  500999 ≡ 0 (mod 106).

�����

�) ��� ����;  �) ����� �����.

��������� � ���������� �������������

�����
����� ������ �.�.
�������� �������������� ������
�����
����� 11
�������� �������
���� ������� � ��������
������
����� 36

Добавить комментарий