2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Старый сюжет (IMO 1988, Problem 6)
Сообщение01.05.2019, 11:59 
Модератор
Аватара пользователя


11/01/06
5702
nnosipov в сообщении #1390528 писал(а):
maxal
Кажется, дошло: дело в наличии рациональных решений (принцип Хассе ведь?). Если так, то есть быстрая проверка с помощью критерия Лежандра, которая позволит продолжить последовательность dmd.

Не совсем так. Например, для $k=10$ тоже есть рациональные решения.

-- Wed May 01, 2019 04:09:44 --

dmd в сообщении #1390536 писал(а):
Но почему-то отсеились 265, 436, 820, которые были кандидатами после численной проверки в Вольфраме.

На каком этапе отсеялись?

 Профиль  
                  
 
 Re: Старый сюжет (IMO 1988, Problem 6)
Сообщение01.05.2019, 12:15 
Заслуженный участник


20/12/10
9061
maxal в сообщении #1390538 писал(а):
Так фильтровать будет правильно?
Не знаю. Символ Кронекера уже в деле ...
maxal в сообщении #1390538 писал(а):
Не совсем так.
Спасибо. Похоже, не все так просто.

Пока у меня ответа нет (и не было изначально) на вопрос, как находить те $k$, для которых указанное выше сравнение разрешимо для любых $m$. Будем думать.

 Профиль  
                  
 
 Re: Старый сюжет (IMO 1988, Problem 6)
Сообщение01.05.2019, 12:29 


16/08/05
1153
maxal в сообщении #1390538 писал(а):
На каком этапе отсеялись?

на этом:
Код:
     for(i=1, #S~,

      m= S[i,1]; p= polrootsmod('X^2 - f, m); if(!#p, s= 0; break())

     );


если закоментарить этот кусок, т.е. проверку по простым в знаменателе a, то вывод такой:
Код:
? nno2()
20, 52, 65, 73, 148, 160, 164, 241, 244, 265, 281, 340, 416, 436, 452, 505, 569, 577, 58
0, 601, 641, 720, 724, 745, 801, 820, 848, 865, 884, 916, 929, 976,

 Профиль  
                  
 
 Re: Старый сюжет (IMO 1988, Problem 6)
Сообщение02.05.2019, 06:43 


16/08/05
1153
Видимо оно было не верно? В Вольфраме то по модулю можно проверить выражение от любого набора переменных

например Solve[a^2 + b^2 == 160 (a b + 1), {}, Modulus -> 3]

но polrootsmod в pari/gp только для одной переменной. Как в pari/gp по модулю простого проверить разрешимость уравнения двух переменных?

 Профиль  
                  
 
 Re: Старый сюжет (IMO 1988, Problem 6)
Сообщение02.05.2019, 07:19 
Модератор
Аватара пользователя


11/01/06
5702
dmd, почему просто не перебрать всех кандидатов на роль решений?

 Профиль  
                  
 
 Re: Старый сюжет (IMO 1988, Problem 6)
Сообщение02.05.2019, 07:54 
Заслуженный участник


20/12/10
9061
dmd в сообщении #1390638 писал(а):
Видимо оно было не верно?
Если Вы имеете в виду кандидатов от Wolfram, то, например, для числа $k=265$ можно доказать (только что проверил своим способом), что сравнение разрешимо по любому модулю. Так что можно, действительно, с каждым кандидатом поработать индивидуально (если я правильно понял maxal).

 Профиль  
                  
 
 Re: Старый сюжет (IMO 1988, Problem 6)
Сообщение02.05.2019, 08:11 


16/08/05
1153
Да, действительно!

(тогда так)

Код:
nno2()=
{
for(k=1, 1000,

  if(!issquare(k),

   if(k%2, d= k^2-4; f= 4*k, d= (k/2)^2-1; f= k);

   if(kronecker(f, d)==1,

    N= bnfisnorm(bnfinit('X^2 - d), f);

    if(N[2]==1,

     n= lift(N[1]);

     b= polcoeff(n, 1); q= polcoeff(n, 0);

     if(k%2, a= (q + b*k)/2, a= q + b*k/2);

     S= factorint(denominator(a));

     for(l=1, #S~,

      m= S[l,1]; s= 0;

      for(i=0, m-1, for(j=0, m-1,

       r= (i^2 + j^2 - k*(i*j + 1)) % m;

       if(!r, s= 1; break(2))

      ));

      if(!s, break())

     );

     if(s, print1(k,", "))
\\     if(s, print(k,"    ",n,"    ",b,"    ",a,"\n"))

    )
   )
  )
)
};


ответ:
Код:
? nno2()
160, 241, 265, 436, 580, 601, 720, 745, 801, 820, 865, 916, 976,


265, 436, 820 вернулись

 Профиль  
                  
 
 Re: Старый сюжет (IMO 1988, Problem 6)
Сообщение02.05.2019, 08:26 
Заслуженный участник


20/12/10
9061
dmd в сообщении #1390649 писал(а):
160, 241, 265, 436, 580, 601, 720, 745, 801, 820, 865, 916, 976
Вот это и будем теперь проверять.

 Профиль  
                  
 
 Re: Старый сюжет (IMO 1988, Problem 6)
Сообщение02.05.2019, 17:06 
Модератор
Аватара пользователя


11/01/06
5702
dmd, похоже, что все ok. У меня только пара замечаний по коду. Во-первых, проверка на символ Кронекера и разделение на четные/нечетные $k$ - излишни, то есть, хуже они не сделают, но и лучше - тоже. Во-вторых, если есть цикл типа for(k=1,1000, if( A, <большой кусок кода> )), то для пущей читабельности и меньшей вложенности лучшпе писать for(k=1,1000, if(!A,next); <большой кусок кода> ).

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group