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

Вычислить с помощью класса совершенные числа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как сделать что бы программа не выходила из консоли пока не будут введены все числа.? http://www.cyberforum.ru/cpp-beginners/thread1137851.html
#include <iostream> #include <conio.h> using namespace std; #include <locale> int main() { setlocale(LC_ALL , "Russian"); int x; cout << "Введите число от 0 до 10: \n";
C++ Вложенные объекты #include <iostream> using namespace std; class one { public: one(int a):object(a){} private: two object; int a; http://www.cyberforum.ru/cpp-beginners/thread1137834.html
C++ Подскажите: структура "Игрушка", файловый ввод/вывод
На основе данных входного файла составить инвентарную ведомость игрушек, включив следующие данные, название игрушки, ее стоимость в руб, возрастные границы детей, для которых предназначена игрушка. Вывести в новый файл инвентарную ведомость игрушек, уменьшив стоимость каждого вида ирушек на х процентов
C++ В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить
В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить: 1) количество отрицательных элементов массива; 2) сумму модулей элементов массива, расположенных после минимального по модулю элемента. Добавлено через 49 секунд Нашел на форуме тему с похожей задачей, но там условия другие #include <iostream> #include <vcl.h>
C++ В однородном массиве http://www.cyberforum.ru/cpp-beginners/thread1137811.html
В одномерном массиве, вводимом с клавиатуры и состоящем из 10 вещественных элементов, вычислить: 1) количество элементов массива, больших С (вводится с клавиатуры); 2) произведение элементов массива, расположенных после максимального по модулю элемента.
C++ Разработать рекурсивную функцию, возвращающую значение: для вычисления значения функции Аккермана для неотрицательных чисел n и m. Функция Аккермана определяется следующим образом: подробнее

Показать сообщение отдельно
volvo
Супер-модератор
 Аватар для volvo
21680 / 14153 / 3938
Регистрация: 22.10.2011
Сообщений: 25,011
Записей в блоге: 2
03.04.2014, 15:07     Вычислить с помощью класса совершенные числа
Для бОльших интервалов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <string>
#include <cmath>
#include <boost/dynamic_bitset.hpp>
 
class Perfect
{
    long from, to;
public:
    Perfect(long _from, long _to):from(_from), to(_to)
    {
    }
    void print();
};
 
void Perfect::print()
{
    for(int bin = 1; bin < 15; bin++)
    {
        std::string s = "";
        for(int i = 0; i < bin; i++) s = "1" + s + "0";
        s = "1" + s;
 
        boost::dynamic_bitset<>  x(s);
        long check = x.to_ulong();
        if(check < from) continue;
        if(check > to) break;
 
        long sum = 1;
        for(int div = 2; div <= (long)sqrt(check); div++)
            if(!(check % div)) sum += div + (check / div);
        if(check == sum) std::cout << sum << std::endl;
    }
 
}
 
int main()
{
    int start = 1, finish = 50000000;
    /*
    std::cout << "Lower limit";
    std::cin >> start;
    std::cout << "Upper limit";
    std::cin >> finish;
    */
 
    Perfect p(start, finish);
    p.print();
 
    return 0;
}
на интервале 1 .. 50 миллионов этот код работает доли секунды. Dima_142577, попробуй запустить свой код на этом же интервале.
 
Текущее время: 02:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru