Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Факторизация числа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка оператора ++ http://www.cyberforum.ru/cpp-beginners/thread846376.html
Нужно создать операторы префиксного и постфиксного инкремента для приращения переменной itsRadius класса SimpleCircle. Переменная itsRadius должна размещаться в динамической памяти. Вот моя...
C++ Вычислить произведение отрицательных элементов P1 и произведение положительных элементов P2 В массиве действительных чисел(N=15) есть только положительные и отрицательные элементы.Вычислить произведение отрицательных элементов P1 и произведение положительных элементов P2.Сравнить модуль P2... http://www.cyberforum.ru/cpp-beginners/thread846375.html
C++ И все еще о сравнениях первой степени
Не могу понять в чем ошибка, элементы матрицы последний первой строки и последний второй - дублируются на места первого элемента второй строки и первый элемент третьей соответственно... помогите...
Перегрузка оператора C++
Здравствуйте! Помогите разобраться с перегрузкой операторов. Суть задания: Осуществите перегрузку оператора “++” так, чтобы при его использовании к объекту прибавляется 2 Перегрузку вроде...
C++ Быстрая сортировка. Сложности с сортировкой по возрастанию и убыванию http://www.cyberforum.ru/cpp-beginners/thread846359.html
Сложность в то, что не корректно работает быстрая сортировка по возрастанию и убыванию. В консоли приходится несколько раз выбирать способ сортировки.(Скрин во вложении) #include <iostream> ...
C++ UoPilot на С++ Добрый день. Хочу написать прогу на С++, аналогичную уже существующей UoPilot. Подскажите норм литературу. подробнее

Показать сообщение отдельно
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
23.04.2013, 20:24  [ТС]
Вот написал. Памяти жрёт ровно на хранение ответа.
Выводит простые числа и их степень в разложении.
Всё работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cin >> n;
vector <pair<int, long long>> ans;
for (long long i = 2; i*i <= n; i++) {
    if (n % i == 0) {
        ans.push_back(make_pair(0, i));
        while (n % i == 0) {
            n /= i;
            ans[ans.size()-1].first--;
        }
    }
}
if (n > 1) {
    ans.push_back(make_pair(-1, n));
}
sort(ans.begin(), ans.end());
cout << ans.size() << endl;
for (int i = 0; i < ans.size(); i++) {
    printf("%I64d %d\n", ans[i].second, -ans[i].first);
}
Добавлено через 5 минут
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru