Andrew10
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору KChernov Я сам могу указать несколько мест в программе, где можно пооптимизировать. Например, массив prime вовсе не нужен, информация о простых числах хранится в номерах элементов массива tmp, которые .true. И так далее Меня не требуется убеждать в том, что динамически распределяемые массивы - это хорошо, просто эта программа была написана в качестве отдыха от основной муторной деятельности по написанию отчета под влиянием вопроса в топике. Разлагать произвольные числа на множители я, например, с ее помощью не собирался. Поэтому сначала вопрос, работает ли сам алгоритм, а оптимизация - это дело второе. Хотя и увлекательное. Цитата: разве что желательна оценка доли простых чисел (думаю она есть). | Оценка Эйлера NPrime(N)~ N/Ln(N). Цитата: Зачем программе знать все простые числа, не превышающие n, если ей достаточно знать лишь все простые числа, не превышающие корень из n ? | Оно конечно так, но тогда нужно предусмотреть обработку случая, когда после деления на все такие простые множители получается не единица. Например n=34=2*17. В результате программа станет чуть-чуть посложнее. Что лучше - простой, но не оптимальный алгоритм или оптимальный, но менее понятный? Еще раз - дело вкуса Особенно в процессе обучения. |