Программа для исследования простых чисел
Тут лежит код: https://github.com/olegvilko/primeNumbers/tree/master/primeNumbers
Тут работа с таблицами: https://simpleprimenumbers.blogspot.com/2018/10/prime-numbers.html
Тут работа с таблицами: https://simpleprimenumbers.blogspot.com/2018/10/prime-numbers.html
О программе
Программа вычисляет простые числа и заносит их в базу данных MySQL.Далее есть возможность выводить таблицы на экран и указывать логику вывода.
Для логики можно использовать функционал интерфейса или использовать класс Custom для создания своей логики вывода.
Почему вообще был сделан класс Custom? Изначально планировалось сделать широкие настройки из интерфейса, вплоть до введения функций. В итоге пришлось от этого отказаться, так как нужна очень широкая настройка вывода, которую никакой интерфейс не сможет дать, так что этот класс можно считать за пользовательский интерфейс, который позволяет очень многое. Возможно когда нибудь заменю его на что-нибудь в виде скриптинга на lua
Интерфейс включает в себя возможность
- указывать интервал вывода
- указывать количество колонок вывода
Класс Custom имеет очень широкие возможности для настройки вывода. Напрямую доступа он не имеет к базе, но принимает значения оттуда и далее с ними можно делать что нужно.
Методы:
IsVisible - тут указываем какие числа показывать, а какие заменять пробелами
AllotmentString - указываем какие числа выделять квадратными скобками []
ColumnVisible- какие из колонок выводить на экран
ProcessingList - сюда попадает уже массив строк перед их выводом и можно изменить или доработать вывод.
OwnAlgorithm - свой алгоритм, запускается соответствующей кнопкой на интерфейсе. Сюда попадает весь ряд натуральных чисел и ряд простых чисел, использовать когда нужна дополнительная логика, реализация которой не возможна обычным выводом. Например при выводе расстояний.
Интерфейс
Файл:Сохранить - копирует рабочую таблицу в таблицу резервной копии (копия перед этим очищается)
Загрузить - копирует данные из резервной копии в рабочую таблицу (рабочая таблица перед этим очищается)
Старт/Стоп - запуск вычисления простых чисел. Продолжает с последнего вычисленного в таблице
Опции:
Язык - Поддержка языков. Русский, английский. Можно добавлять свои языки.
Очистить таблицу - очищает рабочую таблицу.
Путь к базе данных - тут можно указать строку подключения к MySQL базе (адрес, база, логин, пароль, порт)
Задержка - вычисление простых чисел происходит в отдельном потоке и у меня проблем не вызывает, но можно указать интервал ожидания вычисления, дабы снизить нагрузку.
Считать до - указывает предел вычислений, после достижения которого выскочит сообщение, что достигнут предел. Изначально планировалось для реализации вычисления простых чисел методом решета Эратосфена, но этот метод не был добавлен.
Метод проверки - это не математические методы, это методы программной реализации.
Простой - вычисление в цикле деления на все числа до определенного периода.
По массиву - числа на которые будет проверка делением берутся из таблицы и загоняются в массив, далее идет проверка по этому массиву.
По таблице - тут каждая проверка идет с запросом в таблицу.
О методах.
Изначально по массиву проверка должна дать самый быстрый способ вычисления. Но в таком случае делители должны держаться в оперативной памяти, что ограничивает вычисление вычислительными мощностями.
Этого лишены оба других метода.
Простая проверка считает быстро, но очень много лишних вычислений.
Проверка по таблице очень долгая, но при очеь больших числах это будет самый эффективный способ, так как для простой проверки будет слишком много ненужных делений при росте рассредоточенности простых чисел в числовом ряде и не так зависим от вычислительных возможностей железа.
Создать таблицы - при подключении к пустой базе создает структуру рабочей таблицы и структуру таблицы резервной копии.
Справка
О программе - выводит версию программы.
Свой алгоритм - вычисление вывода по алгоритму созданному в методе OwnAlgorithm пользовательского класса Custom.
Скопировать в буфер - копирует содержимое вывода в буфер.
Ниже вывода расположена строка состояния, которая показывает сколько сейчас в рабочей таблице проверено чисел и сколько из них простых. Также показывается счетчик времени последнего вычисления.
Уровни доступа
В первую очередь при создании кода уделялось внимание максимальному абстрагированию и уровню доступа только к тем методам, которые нужны отдельному классу.
Уровень интерфейса отделен от логики программы, но имеет к ней доступ и только к ней, не считая класс языка и общих настроек. Класс логики имеет доступ к вызову методов в классе SQL, а также к методам класса Custom.
Другим языком Form создает экземпляр класса Logics и класса Language. Logics создает экземпляры классов SQL и Custom.
База данных
В качестве базы данных использована система MariaDB. Изначально работа была построена с MS SQL. Но потом было решено перейти на кроссплатформенную систему управления и настройкой отдельного сервера Centos7 mariadb+nginx+phpmyadmin.Настройка сервера:
https://mikbill.blogspot.com/2018/10/centos7-mariadbnginxphpmyadmin.html
Но логика построена так, чтобы можно было перейти на другую систему или даже сделать поддержку нескольких баз данных одновременно
Различные таблицы и способы их выведения с помощью данной программы описаны тут:


Комментарии
Отправить комментарий