Начала и факторизации

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Работайте с началами

Простые числа являются положительными целыми числами, больше, чем 1, которые имеют только два положительных целочисленных делителя: 1 и сам номер. В MuPAD® можно проверять, является ли номер главным при помощи функции isprime. Например, 809 простое число, в то время как 888 и 1 не начала:

isprime(809), isprime(888), isprime(1)

В редких случаях функция isprime может возвратить ложный положительный результат. Функция выполняет тест простоты чисел Миллера-Рабина и использует 10 независимых случайных основ. Для более точного (и также медленнее) метод, смотрите Доказательство Простоты чисел.

Последовательность простых чисел бесконечна. Это запускается с 2, 3, 5, 7, 11, 13, 17, и продолжается. Функция ithprime позволяет вам быстро найти и отобразить любую запись этой последовательности. Например, чтобы найти 100-е простое число, введите ithprime(100):

ithprime(100)

Чтобы найти простое число, которое появляется в последовательности перед особым значением, используйте функцию prevprime. Чтобы найти простое число, которое появляется после особого значения, используйте функцию nextprime. Например, найдите простые числа, которые предшествуют и следуют за номером 1000:

prevprime(1000), nextprime(1000)

Примечание

prevprime и nextprime используют вероятностный тест простоты чисел (тест Миллера-Рабина). В редких случаях эти функции могут возвратить неглавные числа.

MuPAD хранит предрасчетную таблицу простых чисел до определенного значения. Функция ifactor с опцией PrimeLimit возвращает то значение:

ifactor(PrimeLimit)

Функция ithprime с опцией PrimeLimit возвращает количество начал в той таблице:

ithprime(PrimeLimit)

Функция ithprime извлекает простое число из этой таблицы. Чтобы вычислить большие простые числа (который MuPAD не хранит в таблице), ithprime выбирает некоторый номер в качестве отправной точки, и затем рекурсивно вызывает функцию nextprime. Несмотря на то, что внутренний алгоритм пытается сократить количество шагов вычисления, вычисление огромных простых чисел может быть очень медленным:

ithprime(100000000)

Предположим, вы хотите отобразить последовательность простых чисел. Для чисел, что хранилища MuPAD в таблице, вызовите функцию ithprime, чтобы найти каждый номер в последовательности:

ithprime(i) $ i = 1000..1010

Если числа превышают значение, возвращенное ifactor (PrimeLimit), MuPAD не хранит их. В этом случае вызов ithprime для каждого номера может быть очень медленным. Более эффективно используйте ithprime, чтобы найти первый номер в последовательности, и затем использовать nextprime, чтобы найти весь после чисел:

(n := ithprime(3*10^7)), (n := nextprime(n + 1)) $i = 1..10

Чтобы найти, сколько простых чисел не превышает особое значение, используйте функцию numlib::pi:

numlib::pi(2), numlib::pi(3), numlib::pi(20),
numlib::pi(1000), numlib::pi(15.789)

Факторизации

Можно представлять любое целое число как продукт начал. Этот процесс называется, учитывая целое число. Чтобы учесть целое число, используйте функцию ifactor. Например, учтите номер 362880:

ifactor(362880)

Докажите простоту чисел

Функциональный numlib::proveprime реализует алгоритм Аткина Голдвассера Килиана Морайна для доказательства простоты чисел. Для получения информации о простоте чисел, доказывающей и этом конкретном алгоритме, см. следующие бумаги:

  • Atkin, A. O. и Ф. Морен. “Эллиптические кривые и доказательство простоты чисел”. Математика Вычисления. Издание 61, Номер 203, 1993.

  • Goldwasser, S. и Дж. Килиан. “Почти все начала могут быстро сертифицироваться”. Продолжения 18-го ежегодного симпозиума ACM по теории вычисления. Беркли, CA, США, 1986, стр 316-329.

Для относительно маленьких простых чисел numlib::proveprime возвращает значение TRUE. Для составных чисел функция возвращает FALSE:

numlib::proveprime(541), numlib::proveprime(243)

Для больших простых чисел numlib::proveprime возвращает сертификат о простоте чисел:

certificate := numlib::proveprime(1299709)

Сгенерированные сертификаты простоты чисел обеспечивают все данные, в которых вы нуждаетесь для доказательства простоты чисел номера алгоритмом Аткина Голдвассера Килиана Морайна. Можно заменить числами в алгоритм и проверить простоту чисел номера. Функция numlib::checkPrimalityCertificate может проверить сертификат для вас:

numlib::checkPrimalityCertificate(certificate)