matveynator / yafu

И вправду, ещё одна утилита факторизации чисел в Go.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

yafu - и вправду, ещё одна утилита факторизации чисел в Go

  • Скачайте последнюю версию ↓ YAFU.
  • Download latest version of ↓ YAFU.

Поддерживаемые операционные системы: Linix, Windows, Android, Mac, IOS, FreeBSD, DragonflyBSD, OpenBSD, NetBSD, Plan9, AIX, Solaris, Illumos

Секретные карманные опции для беседы с числами:

yafu -h

-file string
за этим углом прячется путь к файлу с кандидатами

Пример содержимого файла candidates.txt:

17289959931316644499265248332609966493573541975672767439894566993300304735621790170252230794443332365307
15724605919818413182578842991469503360630569170503626004600952390767973558300719134340888021850710594347
899173337391997439
1298074214633706835075030044377087
1794246734005973984246794873619
1147797409030816541552

Задание:

Необходимо создать программу на языке Go, которая проверяет, являются ли числа из текстового файла простыми. Файл содержит одно число в каждой строке. Путь к файлу задается через аргументы командной строки.

Требования:

  1. Чтение файла:
  • Программа должна принимать путь к файлу как аргумент командной строки.
  • Программа должна считывать каждое число из файла, который содержит одно число на каждой строке.
  1. Проверка на простоту:
  • Программа должна проверять каждое число на простоту двумя способами: a. С использованием одного теста Миллера-Рабина. b. С использованием 50 тестов Миллера-Рабина для большей точности.
  • Используйте библиотеку math/big для работы с числами и проверки на простоту.
  1. Многопоточность:
  • Программа должна использовать горутины для параллельной обработки чисел.
  • Количество рабочих горутин должно быть равно количеству ядер CPU.
  • Используйте sync.WaitGroup для синхронизации горутин.
  • Реализуйте механизм для передачи чисел рабочим горутинам и получения результатов.
  1. Вывод результатов:
  • Для каждого числа программа должна выводить следующую информацию: a. ID рабочей горутины, которая обработала число. b. Число. c. Результат первой проверки на простоту. d. Результат второй проверки на простоту. e. Время, затраченное на обработку числа.
  • Результаты должны выводиться в консоль.
  1. Обработка ошибок:
  • Программа должна корректно обрабатывать ошибки, такие как неправильный путь к файлу или проблемы с чтением файла.
  1. Дополнительные библиотеки:
  • Если необходимо, можно использовать дополнительные библиотеки для разбора аргументов командной строки или для других вспомогательных функций.

Пример Вывода:

Worker 1: 1234567890123456789: isMaybePrime: false, isPrime: false, Duration: 12345 ns
Worker 2: 9876543210987654321: isMaybePrime: true, isPrime: false, Duration: 67890 ns
...

Дополнительные Замечания:

  • Старайтесь делать код чистым и читаемым, следуя принципам хорошего стиля кодирования на Go.
  • Добавьте комментарии к ключевым частям кода.
  • Убедитесь, что программа корректно компилируется и работает.

About

И вправду, ещё одна утилита факторизации чисел в Go.


Languages

Language:Go 72.2%Language:Shell 27.8%