Какое простое число является самым большим множителем числа 600851475143? - Lisp

Узнай цену своей работы

Формулировка задачи:

Какое простое число является самым большим множителем числа 600851475143? Написать программы на Common Lisp и F# Помогите пожалуйста

Решение задачи: «Какое простое число является самым большим множителем числа 600851475143?»

textual
Листинг программы
(defun max-prime-divisor (n)
 (do ((a 2 (1+ a)))
     ((> (* a a) n) n)
  (if (zerop (mod n a))
   (return (max-prime-divisor (/ n a))))))
 
? (max-prime-divisor 600851475143)
6857

Объяснение кода листинга программы

В данном коде определен функцией max-prime-divisor, которая находит максимальное простое число, являющееся делителем числа n. В функции используется цикл do, который начинается с переменной a равной 2 и увеличивается на 1 с каждой итерацией, пока не найдено простое число, большее n. В каждой итерации цикла проверяется, является ли a делителем n. Если да, то функция рекурсивно вызывается для a и результат сохраняется в переменной n. Если нет, то цикл продолжается. Если делитель не найден, то функция возвращает 0, что означает, что самое большое простое число является делителем n. В конце кода вызывается функция max-prime-divisor с аргументом 600851475143, и результат выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы