2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Биоматематические числа
Сообщение26.07.2018, 15:56 
Аватара пользователя


01/12/11

8634
Назовём целое неотрицательное число биоматематическим, если его факториал, записанный в обратном порядке, имеет вид $p-1$ для некоторого простого $p$.

Первые шесть биоматематических чисел: 0, 1, 2, 3, 4, 6.
Проверка чисел до 25 показала (если была правильно проведена), что других биоматематических чисел пока не встречается.

Возникает гипотеза, что их и вовсе больше нет.
Хотелось бы узнать, верна ли она.

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 16:03 
Заслуженный участник
Аватара пользователя


16/07/14
9216
Цюрих
$6! = 720$, в обратном порядке $27$, $27$ не имеет вид $p - 1$

-- 26.07.2018, 16:07 --

Зато $39! = 20397882081197443358640281739902897356800000000$, и $865379820993718204685334479118028879303$ простое.

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 16:34 
Аватара пользователя


01/12/11

8634
mihaild
Да, Вы правы. Недаром говорят: "Поспешишь - людей насмешишь!"

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 17:39 
Заслуженный участник
Аватара пользователя


23/07/05
18006
Москва
Следующее простое — для $256!$. А потом до $4000!$ включительно ничего нет.

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 17:43 


05/09/16
12128
mihaild
Someone
Как вы это делаете? Особенно до $4000!$ :shock:

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 17:46 
Заслуженный участник
Аватара пользователя


23/07/05
18006
Москва
Wolfram Mathematica
Код:
For[n = 0, n <= 4000, n++, SS = IntegerDigits[n!]; s = 0;
m = Length[SS]; For[k = 0, k < m, k++, s = 10 s + SS[[m - k]]];
s = s + 1; If[PrimeQ[s], Print["n = ", n, ", p = ", s]]]

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 17:48 
Заслуженный участник
Аватара пользователя


16/07/14
9216
Цюрих
Используется синтаксис Python
from tqdm import trange
from gmpy2 import is_prime
from math import factorial


t = trange(1, 5000)
for i in t:
    if is_prime(int(str(factorial(i))[::-1]) + 1):
        t.write('%d %d %d\n' % (i, factorial(i), int(str(factorial(i))[::-1]) + 1, ))

До 2000 добегает за минуту, дальше плохо (до 4000 не переварит за разумное время скорее всего). Ну и нужно помнить, что gmpy2.is_prime использует только проверку на маленькие делители и Миллера-Рабина (могут быть ложноположительные срабатывания).

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 18:05 


05/09/16
12128
mihaild
Someone
А... Спасибо :) Python и Wolfram Mathematica нет (рабочий комп).
А то я себе на андроид-планшет :mrgreen: установил PARI/GP но я тупой ленивый, и никак не освою, а было бы интересно как справился бы планшет с Ktina-type задачами.

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 19:34 
Заслуженный участник


20/08/14
11867
Россия, Москва
wrest
Держите PARI/GP код, сделано конечно по тупому (кажется нет встроенной функции переворота ни цифр у числа, ни вектора):
Код:
? for(n=1,2000,v=digits(n!);x=0;forstep(i=#v,1,-1,x=x*10+v[i]);if(ispseudoprime(x+1),print(n)))
1
2
3
4
39
256
? ##
  ***   last result computed in 1min, 32,307 ms.
До 300 считает 0.25с.

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 19:42 


05/09/16
12128
Dmitriy40 в сообщении #1329006 писал(а):
До 300 считает 0.25с.

О, спасибо. До 300 не успеваю засечь. До 600 - 20 секунд.

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 19:46 
Заслуженный участник


20/08/14
11867
Россия, Москва
wrest
Если присмотреться, то в логе видна команда ##, которая и выдаёт время выполнения последней команды без всяких засеканий. До 600 считает 1.5с, так что андроид не катит по скорости, будьте осторожны.
Нашёл и инверсию и свёртку обратно в число, теперь код ещё проще и чуть быстрее:
Код:
for(n=1,2000,if(ispseudoprime(fromdigits(Vecrev(digits(n!)))+1),print(n)))
С 1м32с время уменьшилось до 1м15с.

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 20:08 


05/09/16
12128
Dmitriy40 в сообщении #1329011 писал(а):
Если присмотреться, то в логе видна команда ##, которая и выдаёт время выполнения последней команды без всяких засеканий.

У меня выдает ноль, так что я по-старинке, секундомером.
Dmitriy40 в сообщении #1329011 писал(а):
До 600 считает 1.5с

Ага, значит на порядок.

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 20:23 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Уважаемый Someone, действия, производимые вами над Wolfram Mathematica, справедливо описать лишь одним словом: изнасилование. Код, который вы пишете, ужасен настолько, насколько это вообще возможно. Это просто образец забивания гвоздей микроскопом. Вспомним недавнее:
Someone в сообщении #1323797 писал(а):
Код:
x =.;For[k=0,k<64,k++,DD=k;SS={};
For[m=1,m<=6,m++,If[OddQ[DD],SS=Append[SS,2];DD=(DD-1)/2,SS=Append[SS,-2];DD=DD/2]];
  P=Factor[Product[(x+m-1),{m,6}]-Product[(x+m-1+SS[[m]]),{m,6}]];
  Print[SS,": ",P];Print[Solve[P==0,x]]]
и сравним с моим в том же топике:
Aritaborian в сообщении #1323806 писал(а):
Код:
Solve[(Times @@ (Range[x, x + 5]) - Times @@ (Range[x, x + 5] + #) == 0), x] & /@ Tuples[{-2, 2}, 6] // Column
И вернёмся к задаче этого топика.
Someone в сообщении #1328974 писал(а):
Код:
For[n = 0, n <= 4000, n++, SS = IntegerDigits[n!]; s = 0;
m = Length[SS]; For[k = 0, k < m, k++, s = 10 s + SS[[m - k]]];
s = s + 1; If[PrimeQ[s], Print["n = ", n, ", p = ", s]]]
И мой вариант:
Код:
Select[Range[4000], (PrimeQ[FromDigits[Reverse[IntegerDigits[#!]]] + 1] &)]

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 20:45 


05/09/16
12128
А вот числа вида $p+1$ заканчиваются уже на 33 (проверено до 1000)

 Профиль  
                  
 
 Re: Биоматематические числа
Сообщение26.07.2018, 20:46 
Заслуженный участник


20/08/14
11867
Россия, Москва
wrest в сообщении #1329014 писал(а):
У меня выдает ноль, так что я по-старинке, секундомером.
Странно, но бывает, сам сталкивался с аналогичным. Тогда так:
Код:
gettime();...тут_много_кода...;printf("Time: %0.1fs\n",gettime()/1000)
Два вызова gettime() необходимы, первый обнулит счётчик.

-- 26.07.2018, 20:47 --

wrest в сообщении #1329026 писал(а):
А вот числа вида $p+1$ заканчиваются уже на 33 (проверено до 1000)
Есть следующее, 1406.

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

Модератор: Модераторы



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

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


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

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