Найти наибольший делитель числа,Не равный самому числу.
Забыла напрочь. Выручайте.Если можно то еще и объясните.
9
68
28
73
84
90
59
35
117
115
93
160
65
47
81
300
38
102
99
87
212
67
125
46
78
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
1. Дано действительное число – цена 1 кг конфет. Вывести стоимость 0,5; 1; 1,5 … 10 кг конфет. (Подсказка – используем цикл WHILE).
Программа должна иметь следующий вид:
Компьютер запрашивает стоимость одного килограмма конфет.
Пользователь вводит стоимость одного килограмма конфет, и компьютер выводит на экран:
Наибольший делитель числа, не равный ему самому
Нужно написать функцию, которая возвращает самый большой делитель числа (которое не совпадает с самим введённым числом).
@avp: Для четных решение очевидно, а значит можно проверять, начиная с 3 с шагом 2
Код без проблем переполнения:
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Найдите наибольший делитель числа, не равный самому числу. 21-
39-
108-
85-
61-
9-
68-
28-
73-
84-
82-
141-
103-
187-
51-
36-
116-
75-
140-
208-
Я понимаю. Прошу очень много, но не могли бы вы хоть половину решить? Лучший ответ дам тому, кто ответил больше.

Для того, чтобы найти наибольший делитель числа, разложим его на простые множители. Если в числе только 2 множителя — выбираем наибольший:
21 = 3 * 7
39 = 3 * 13
Все делители числа находятся перемножением его множителей всевозможными вариантами. В данном случае, чтобы найти наибольший делитель (если в числе больше двух множителей), достатчно число разделить на наименьший множитель:
108 = 2 * 2 * 3 * 3 * 3 ⇒ 108 : 2 = 54 — наибольший множитель
Наибольший делитель, не равный самому числу
Как найти наибольший делитель, не равный самому числу?
Способ «разложить на множители и выбрать наибольший из них» не предлагать.
Нужен способ, который мог бы находить данный делитель для чисел до 10^9. При простом переборе чисел получается слишком большие затраты компьютерных ресурсов.

Это т. наз. задача «факторизации больших чисел». Для нее не существует известного способа быстрого решения.
И на этом (на невозможности быстрого решения) построены некоторые алгоритмы шифрования «с открытым ключом».
Кто-нибудь найдет способ — и секретность рухнет. )))))

Делим Число1 на Делитель=(Число1 минус один) . Если результат целый, то Делитель=(Число1 минус один) — наибольший делитель. Иначе уменьшаем Делитель на еще 1 и повторяем проверку (организуем цикл) .
Еще надо рассмотреть исключения- если Число1 задано как ноль, единица или отрицательное
Для большиих чисел: тогда подходи с другой стороны: дели на 2, проверяй результат на целое ли число, потом на 2+1 и т. д. «результат» — искомый макс. делитель.