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
11869
Россия, Москва
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
11869
Россия, Москва
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
11869
Россия, Москва
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  След.

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



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

Сейчас этот форум просматривают: YandexBot [bot]


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

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