Хитрость в том, чтобы найти наименьший простой множитель и разделить на него составное число c
, чтобы получить самый большой простой фактор.
Хитрость заключается в том, чтобы найти наименьший фактор F (начиная с 2), где C / F - простое число. Тогда C / F будет наибольшим простым множителем C.
Редактировать: Похоже, вы также хотите перечислить все факторы. Проблема в том, что в вашем внутреннем цикле, который проверяет простоту, вы устанавливаете самое большое простое число на i
для чисел, которые делятся на что угодно. Другими словами, попробуйте что-то вроде этого:
is_prime = true;
for (j = 2; j <= x / 2; j++) {
if (i % j == 0)
is_prime = false;
}
if (is_prime)
largest_prime = x;
Обратите внимание, что на самом деле вы можете остановиться раньше, чем x, деленное на 2. Вы можете остановиться на квадратном корне из x. Тем не менее, функция sqrt()
в <math.h>
немного сложна в вашем случае, потому что она работает с числами с плавающей запятой, а не с целыми числами.