2014 dxdy logo

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

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




На страницу Пред.  1 ... 14, 15, 16, 17, 18, 19, 20 ... 55  След.

А вам пакет PARI/GP интересен?
Да 83%  83%  [ 58 ]
Нет 6%  6%  [ 4 ]
Не уверен(а) 11%  11%  [ 8 ]
Всего голосов : 70
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение31.07.2018, 19:35 
Dmitriy40
То что надо, спасибо!

Справился тут собрать pari/gp из исходных кодов (с помощью зала, ессно) на планшете с андроидом (внутри termux-а - это типа терминала с командной строкой), работает даже быстрее чем приложение PariDroid из Google PlayMarket-а, ну и таймер теперь работает.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение31.07.2018, 20:30 
wrest
Для таймера ещё есть параметр default(timer,1) (текущее состояние показывается по команде \d), тогда если время выполнения было ненулевым (точнее более тика таймера ОС, 16мс для винды), то после выполнения команды всегда автоматом добавляется строка time = 1,076 ms. (цифра будет другой конечно). Бывает удобно. Правда у меня иногда почему-то не работало, не знаю уж почему. Пример:
Код:
? default(timer,1)
? forprime(i=1,10^7,b=i^2)
time = 1,076 ms.
?

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение31.07.2018, 20:41 
Dmitriy40 в сообщении #1329857 писал(а):
после выполнения команды всегда автоматом добавляется строка time = 1,076 ms. (цифра будет другой конечно). Бывает удобно. Правда у меня иногда почему-то не работало, не знаю уж почему

Да, у меня в PariDroid это тоже не работало, никогда. И prompt не менялся на "временной".
Теперь работает.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.08.2018, 08:48 
Аватара пользователя
есть ли функция которая находит простые числа между заданными, двумя, числами $(n-1)^2$ и $n^2$ , (primes between)?
И надо найденные простые в отрезке $n$ записать группой в векторе.
Что-то вроде:
Код:
a=addprimes(primes((n-1)^2));
b=addprimes(primes(n^2));
c_n=removeprimes(a in b)

(Не знаю как из элементов вектора $b$ удалить элементы вектора $a$, записав остатки в $c$.)
Сделать от двух до заданного $n$.
Или лучше через nextprime реализовать?

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.08.2018, 09:45 
Soul Friend
Код:
forprime(p = a, {b}, seq)

Evaluates seq, where the formal variable p ranges over the prime numbers between the real numbers a to b, including a and b if they are prime. More precisely, the value of p is incremented to nextprime(p + 1), the smallest prime strictly larger than p, at the end of each iteration. Nothing is done if a > b.

Код:
  ? forprime(p = 4, 10, print(p))
  5
  7


-- 01.08.2018, 10:08 --

Soul Friend в сообщении #1329912 писал(а):
И надо найденные простые в отрезке $n$ записать группой в векторе.

Код:
? v=[];n=20;forprime(p=(n-1)^2,n^2,v=concat(v,p));print(#v," primes found: ",v)
6 primes found: [367, 373, 379, 383, 389, 397]
Для $n=20$, простые числа между $(n-1)^2$ и $n^2$ помещаются в вектор v
На планшете для $n=10^5$ считает 8 секунд, находит 8651 простых чисел.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.08.2018, 13:01 
Аватара пользователя
wrest
Спасибо.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.08.2018, 13:14 
Soul Friend в сообщении #1329912 писал(а):
(Не знаю как из элементов вектора $b$ удалить элементы вектора $a$, записав остатки в $c$.)
Тоже не знал, но вот нашёл:
Код:
? ?setminus
setminus(x,y): set of elements of x not belonging to y.
? setminus([1,2,3,4,5,6,7,8,9],[2,3,5,7])
%1 = [1, 4, 6, 8, 9]
А setintersect(x,y) выдаст наоборот общую часть.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.08.2018, 13:28 
Аватара пользователя
Dmitriy40
Спасибо, конспектирую со свёртыванием ).
1)А есть короткая запись этого?
Код:
concat(setminus(x,y), setminus(y,x))

2) Функция nextprime(x) показывает следующее простое число если само число $x$ составное, а если $x$ простое, то возвращает само число $x$.
А надо чтобы в любом случае показывала следующее простое число:
$$nextprime(7)=11$$
Как это сделать?
Ещё не разобрался в pari/gp reference card.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.08.2018, 14:07 
Soul Friend в сообщении #1329943 писал(а):
А надо чтобы в любом случае показывала следующее простое число:
$$nextprime(7)=11$$
Как это сделать?

Очевидно, если аргумент целый, то прибавить единицу к нему, так: nextprime(7+1)
Если аргумент не целый, то взять целую часть и прибавить единицу к ней: nextprime(floor(n)+1)

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.08.2018, 14:54 
Soul Friend в сообщении #1329943 писал(а):
1)А есть короткая запись этого?
Код:
concat(setminus(x,y), setminus(y,x))
Совсем кардинально короче не придумал, другой вариант если порядок в результате не важен:
Код:
setminus(setunion(x,y),setintersect(x,y))

Кстати обнаружил что все эти set* правильно работают лишь с отсортированными по возрастанию векторами и никак иначе. Беда.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.08.2018, 15:00 
Dmitriy40 в сообщении #1329952 писал(а):
Кстати обнаружил что все эти set* правильно работают лишь с отсортированными по возрастанию векторами и никак иначе.

Да, там написано
Цитата:
In PARI, a set is a row vector whose entries are strictly increasing with respect to a (somewhat arbitrary) universal comparison function. To convert any object into a set (this is most useful for vectors, of course), use the function Set.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.08.2018, 15:07 
Аватара пользователя
wrest в сообщении #1329948 писал(а):
то прибавить единицу к нему

Тогда придётся добавлять условие проверки просоты числа.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.08.2018, 15:15 
Soul Friend в сообщении #1329955 писал(а):
Тогда придётся добавлять условие проверки просоты числа.
Не нужно, n+1 будет или простым (как 2 и 3) или составным (чётным) и в обоих случаях nextprime(n+1) выдаст правильно простое число, большее n.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.08.2018, 15:26 
Аватара пользователя
Dmitriy40 в сообщении #1329957 писал(а):
выдаст правильно простое число, большее n.

nextprime я применяю внутри функций в котором записана формула, формула пробегает все натуральные числа $n$ до заданного $x$. И надо чтобы вне зависимости от простоты числа $n$ выдавалось следующее за числом $n$ простое число.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.08.2018, 15:30 
Soul Friend в сообщении #1329955 писал(а):
Тогда придётся добавлять условие проверки просоты числа.


Код:
? n=6.99999;nextprime(floor(n)+1)
%1 = 7
n=7;nextprime(n+1)
%2 = 11
n=7;nextprime(floor(n)+1)
%3 = 11
n=7.00001;nextprime(floor(n)+1)
%4 = 11
? n=10.0001;nextprime(floor(n)+1)
%5 = 11


-- 01.08.2018, 15:32 --

Soul Friend в сообщении #1329958 писал(а):
И надо чтобы вне зависимости от простоты числа $n$ выдавалось следующее за числом $n$ простое число.

Прибавить единицу необходимо к целой части аргумента функции этой, хотите как вы тогда работать будет она.

 
 
 [ Сообщений: 824 ]  На страницу Пред.  1 ... 14, 15, 16, 17, 18, 19, 20 ... 55  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group