этот вопрос достаточно прост для грубого решения, но это плохая идея, потому что вся идея проекта euler - это проблемы, о которых вам нужно подумать (см. Конец ответа), поэтому вот некоторыеиз недостатков вашей программы:
сначала используйте rem вместо мода.это более эффективно.
Некоторое математическое мышление должно было сказать вам, что вам не нужно проверять все числа от 1 до x в функции isprime и функции getD, но проверять все числа от квадратного корня до одного(или наоборот) должно быть достаточно.обратите внимание, что в getD вам действительно нужно фильтровать числа между x и квадратным корнем, потому что вы ищете самый большой.
почему вы используете функцию максимума в getD?вы знаете, что список монотонно растет, поэтому вы также можете получить последний.
несмотря на то, что вам нужен только самый большой делитель (который является простым), вы вычисляете список делителей от маленького до большого, заставляя компьютер проверять наличиекаждое значение, если оно является делителем или нет, хотя отбрасывая результат, как только будет найден больший делитель.это должно быть исправлено путем фильтрации списка чисел от x до 1, а не от 1 до x.это заставит компьютер проверять делимость (как я могу это сказать?) для максимально возможного делителя, а не выбрасывать в мусор знание предыдущих проверок.обратите внимание, что эта оптимизация вступает в силу только в том случае, если оптимизируется предыдущая точка, потому что в противном случае компьютер все равно вычислит все делители.
со смешанными предыдущими точками, вы должны были отфильтровать все числа [x, x-1 ..квадратный корень х] и взяли первое.
вы не используете эффективную функцию isPrime.на вашем месте я бы искал библиотечную функцию isprime, которая гарантированно будет эффективной.и есть еще ..
с таким кодом, вы никогда не сможете решить более сложные задачи проекта Эйлера.они предназначены для дополнительного осмысления проблемы (например, замечая, что вам не нужно проверять числа больше из квадратного корня) и написания быстрого и эффективного кода.это цель проекта Эйлера;быть умным в программировании.так что не пропускайте это.