Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Решение в цели числа

Решение в цели числа

Мнениеот peyo » 05 Окт 2023, 21:08

Търся решения на следното уравнение в цели положителни числа:

$ 528440 \cdot x + 375241 = (220 \cdot 10^y + 91 )^2 $

За y до 100,000 няма решения и след това търсенето се забавя. Ще мога да проверя до 1,000,000 на моя компютър предполагам, но си мислех има ли по-лесен/бърз начин?
peyo
Математик
 
Мнения: 1758
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 656

Re: Решение в цели числа

Мнениеот ptj » 06 Окт 2023, 08:08

По принцип има : динамично решето по списък от модули.

Преди много години реших една друга подобна задача: търсеха се всички точни квадрати измежду числата на Фибоначи. Условието бе да се проверят номера до 1000000 (в реално време).
Програмата ми на Intel286 за 13 секунди доказваше, че единственото такова число е 144.

П.П. Въпроса е доколко е важно това за теб, защото реализирането на алгоритъма не е много лесно. ;)
ptj
Математик
 
Мнения: 3305
Регистриран на: 26 Юли 2010, 19:17
Рейтинг: 1112

Re: Решение в цели числа

Мнениеот peyo » 06 Окт 2023, 10:33

ptj написа:По принцип има : динамично решето по списък от модули.

Преди много години реших една друга подобна задача: търсеха се всички точни квадрати измежду числата на Фибоначи. Условието бе да се проверят номера до 1000000 (в реално време).
Програмата ми на Intel286 за 13 секунди доказваше, че единственото такова число е 144.

П.П. Въпроса е доколко е важно това за теб, защото реализирането на алгоритъма не е много лесно. ;)


Не е кой знае колко важно, но ми е забавно, защото е свързано е с този проблем:
https://research.ibm.com/haifa/ponderthis/challenges/October2023.html

Днес наех един евтин virtual server с 4 процесора и го пуснах да търси и ще го оствавя цял ден да видя какво ще направи. Но още в началото виждам, че проверката става много бавна за по-големите числа и няма да стигна близо то милион.

Какво е динамично решето по списък от модули? Има ли някъде примерeн проблем решен да го разгледам?
peyo
Математик
 
Мнения: 1758
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 656

Re: Решение в цели числа

Мнениеот pal702004 » 06 Окт 2023, 10:54

peyo написа:Търся решения на следното уравнение в цели положителни числа:

$ 528440 \cdot x + 375241 = (220 \cdot 10^y + 91 )^2 $

За y до 100,000 няма решения и след това търсенето се забавя. Ще мога да проверя до 1,000,000 на моя компютър предполагам, но си мислех има ли по-лесен/бърз начин?
Разбира се че има.
Първо решаваме уравнението
$ 528440x + 375241 = (220 z+ 91 )^2 $

Получаваме две серии решения за $z$:
$z=1201 n+731$
$z=1201 n+1026$

Сега проверяваме (може и на Excel на компютърчето) за решения
$10^y\equiv 731 \pmod{1201}$

$10^y\equiv 1026 \pmod{1201}$

и виждаме че няма решения.
pal702004
Математик
 
Мнения: 1484
Регистриран на: 23 Сеп 2013, 19:47
Рейтинг: 1399

Re: Решение в цели числа

Мнениеот peyo » 06 Окт 2023, 11:39

pal702004 написа:Сега проверяваме (може и на Excel на компютърчето) за решения
$10^y\equiv 731 \pmod{1201}$

$10^y\equiv 1026 \pmod{1201}$

и виждаме че няма решения.


Това не го разбрах. Защо няма решения? Няма решения за малки числа или въобще няма?
peyo
Математик
 
Мнения: 1758
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 656

Re: Решение в цели числа

Мнениеот ptj » 07 Окт 2023, 00:41

peyo написа:
ptj написа:По принцип има : динамично решето по списък от модули.

Преди много години реших една друга подобна задача: търсеха се всички точни квадрати измежду числата на Фибоначи. Условието бе да се проверят номера до 1000000 (в реално време).
Програмата ми на Intel286 за 13 секунди доказваше, че единственото такова число е 144.

П.П. Въпроса е доколко е важно това за теб, защото реализирането на алгоритъма не е много лесно. ;)


Не е кой знае колко важно, но ми е забавно, защото е свързано е с този проблем:
https://research.ibm.com/haifa/ponderthis/challenges/October2023.html

Днес наех един евтин virtual server с 4 процесора и го пуснах да търси и ще го оствавя цял ден да видя какво ще направи. Но още в началото виждам, че проверката става много бавна за по-големите числа и няма да стигна близо то милион.

Какво е динамично решето по списък от модули? Има ли някъде примерeн проблем решен да го разгледам?


Ако си в БГ е лесно. Трябва ти голяма библиотека (като "Иван Вазов" в Пловдив). Търси по каталог списание "Компютър за вас" броевете от 1988 или 1989 година. На времето Емил Келеведжиев водеше един задочен конкурс. Спомената задача е от него, а в някой от следващите броеве има моето решение (доколкото си спомням на Си++). Обяснена е и цялата идея за динамично решето.
ptj
Математик
 
Мнения: 3305
Регистриран на: 26 Юли 2010, 19:17
Рейтинг: 1112

Re: Решение в цели числа

Мнениеот pal702004 » 08 Окт 2023, 11:59

Това не го разбрах. Защо няма решения? Няма решения за малки числа или въобще няма?
И за малки, и въобще. Степените на 10 по модул 1201 са циклични (по принцип на всяко число по всеки модул). В случая са цилични с цикъл 200.

$10^0 \equiv 1 \pmod {1201}$

$10^{200} \equiv 1 \pmod {1201}$

Тоест, степените на 10 имат точно 200 различни остатъка при делене на 1201. И търсените два не са между тях.

Може в Excel Да се провери. В клетка A1 пишем 10. В клетка B1 пишем =MOD(10*A1,1201). Копираме формулата от B1 в колона B (не цялата, разбира се, до B201 е достатъчно). И виждаме всички остатъци на степените на 10 при делене на 1201.
pal702004
Математик
 
Мнения: 1484
Регистриран на: 23 Сеп 2013, 19:47
Рейтинг: 1399

Re: Решение в цели числа

Мнениеот peyo » 08 Окт 2023, 14:10

pal702004 написа:
Това не го разбрах. Защо няма решения? Няма решения за малки числа или въобще няма?
И за малки, и въобще. Степените на 10 по модул 1201 са циклични (по принцип на всяко число по всеки модул). В случая са цилични с цикъл 200.

$10^0 \equiv 1 \pmod {1201}$

$10^{200} \equiv 1 \pmod {1201}$

Тоест, степените на 10 имат точно 200 различни остатъка при делене на 1201. И търсените два не са между тях.

Може в Excel Да се провери. В клетка A1 пишем 10. В клетка B1 пишем =MOD(10*A1,1201). Копираме формулата от B1 в колона B (не цялата, разбира се, до B201 е достатъчно). И виждаме всички остатъци на степените на 10 при делене на 1201.


Аха! Мерси, сега става много по-ясно.

Добре това уравнение не доведе до решение, но има друг подход, който се оказа добър и намерих решение на първия въпрос на задачата от ponderthis. Втория въпрос е още под въпрос.
peyo
Математик
 
Мнения: 1758
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 656


Назад към Теория на числата



Кой е на линия

Регистрирани потребители: Google Adsense [Bot], Google [Bot]

Форум за математика(архив)