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

нахождение совершенных числел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Шаблон нахождения максимального элемента в массиве http://www.cyberforum.ru/cpp-beginners/thread898546.html
Доброго всем дня.. В общем проблема. Ничерта не могу понять в шаблонах (С++). Суть задания - создание шаблона для нахождения максимального элемента в массиве. Заранее Всем огромная благодарность.
C++ STL контейнер set, вставка элементов Уважаемые админы.Снова прошу о помощи. Необходимо в множество bred,начиная с позиции n, вставить элементы из множества new_bred. #include <iostream> #include <set> using namespace std; set... http://www.cyberforum.ru/cpp-beginners/thread898536.html
Связывание библиотек C++
Допустим есть решение из 4 проектов- Common, A , B и Program. Common содержит некие общие классы и интерфейсы ( например работа с памятью, потоками ). Не является библиотекой. A и B - некие...
C++ Изменить код С++
Вот код #include <cstdlib> #include <iostream> #include <math.h> using namespace std; float f1(float x, float y, float z) { return cos(3*x) - 4*x; }
C++ Простая геометрия http://www.cyberforum.ru/cpp-beginners/thread898497.html
Недавно решал пачку задач на геометрию, но с одной не справился, даже сейчас не выходит. Постановка: Дан выпуклый многоугольник (т.е. все внутренние углы не больше 180 градусов) и прямая....
C++ Вывод вычисления произведения Есть цикл, в котором при помощи cout выводятся номера элементов массива, как вывести вычисления произведений?#include <iostream> using namespace std; int main() { int a; int res = 1;... подробнее

Показать сообщение отдельно
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
11.06.2013, 16:50
Вот самый простой, но самый медленный вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    const size_t N = 30000;
    vector<int> perfects;
    for (size_t i = 1; i != N; ++i) {
        size_t sum = 0;
        for (size_t j = 1; j != i; ++j)
            if (i % j == 0) sum += j;
        if (sum == i) perfects.push_back(i);
    }
 
    for (auto x : perfects) cout << x << ", ";
    return 0;
}
Вот вариант посложнее. Ищет первые 8 совершенных чисел (по алгоритма Мэнли Холла). Больше к сожалению не влезает.
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
bool isSimple(unsigned long long x)
{
    if ( (x != 2 && x % 2 == 0) || x == 1 )
        return false;
    auto _x = static_cast<unsigned long long>( sqrt(x) ) + 1;
 
    for (unsigned long long i = 3; i < _x; ++i)
        if (x % i == 0) return false;
    return true;
}
 
int main()
{
    unsigned long long sum = 0;
    unsigned long long k = 1;
 
    for (char i = 0; i != 32; ++i, k = (k << 1) )
        if ( isSimple(sum += k) )
            cout << (sum * k) << endl;
    return 0;
}
Писал на скорую руку так что могут быть ошибки...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru