2013-02-18 3 views
1

Я как бы зациклен, как сортировать целые числа на основе их наибольшего простого коэффициента в порядке возрастания. Например, у нас есть 3 и 8. Порядок должен быть: 8, 3, потому что основной коэффициент 8 (2) меньше 3-го основного фактора (3). Если у нас есть один и тот же самый главный коэффициент для 2 чисел, таких как 9 и 27, то меньшее число должно быть первым. В этом порядке: 9, 27Сортировка целых чисел на основе их простых коэффициентов

Хорошо, вот мой код, но он нуждается в некоторой модификации.

[код удален по личным причинам - чтобы избежать возможного самостоятельного плагиат от сканера университета, но QSort лучше использовать в любом случае]

Важно также отметить, что целые числа [я] 's наибольший простой множитель хранится как простые числа [i]. Primes уже настроены и хороши, эта вещь нуждается только в правильной сортировке.

Надеюсь, вы можете мне помочь.

Спасибо. :)

ответ

3

Наверняка вам просто нужно использовать primes. В вашем текущем коде вы не используете эту переменную вообще, и кажется довольно ясным, куда она должна идти.

Бонус: посмотрите стандартную функцию библиотеки C qsort.

+0

Ну, я не уверен, какое условие иметь. Я пробовал это: if (integers [j-1]> integers [j] && primes [j-1]> = primes [j]), но это не то, что ожидается. Не могли бы вы помочь? Я думаю, что я оставлю qsort еще в другое время. – bbalchev

+0

Просто подумайте об этом состоянии - вы почти там. Подумайте только, что именно условие состоит в том, чтобы два элемента считались «не по порядку». Это не совсем то, что вы только что написали. –

+0

Хорошо, я просто сделал это с немного более длинным кодом, чем я думаю, он должен быть, но он работает. Благодарю. В следующий раз я буду использовать qsort. Я просто из фона Java, и я не совсем знаком с библиотеками C. – bbalchev

Смежные вопросы