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

Алгоритм Диксона - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти сумму двух наибольших числел из трех http://www.cyberforum.ru/cpp-beginners/thread1175626.html
Даны три различных числа. Найти сумму двух наибольших из них. с++ с формой.
C++ Цвета и символы - Задание Здравствуйте. Надо написать программу желательно на C++ Visual Studio. Смысл программы, как-то вывести подобную вещь изображенную на картинке ниже. Как объяснили, какие-то символы и цвета... В общем, готов поощрить проделаную работу. http://cs619817.vk.me/v619817889/4fcf/xcn-fWO762M.jpg http://www.cyberforum.ru/cpp-beginners/thread1175614.html
C++ Дано файл, элементами которого являются целые числа
Дано файл, элементами которого являются целые числа. Вычислить количество элементов, значение которых больше среднее арифметическое.
а. Реализовать список строк. б. Целое число представляется строкой цифр. Написать функцию, упорядочивающую C++
ЗАДАЧИ НА ДИНАМИЧЕСКИЕ ТИПЫ ДАННЫХ ТРЕБОВАНИЯ: 1. Если в задаче этого раздела не указан тип списка, считать его однонаправленным. 2. В задачах на списки должен быть реализован весь набор операций абстрактного типа данных "список" и все эти операции должны демонстрироваться в интерфейсной части программы.
C++ файлы http://www.cyberforum.ru/cpp-beginners/thread1175581.html
Даны файл, содержащий целые числа. Определить среднее арифметическое наименьшего и наибольшего элементов и произведение их квадратов.
C++ Использование шаблона функции Есть рабочая програма, но преподаватель попросил её немного упростить. Прошу помочь. Всё приведу ниже. Задание: Осуществить циклический сдвиг элементов квадратной матрицы размерностью MxN вправо на К элементов таким образом: элементы i-той строки сдвигаются в последний столбец сверху вниз, из него в последнюю строку справа налево, из нее в первый столбец снизу вверх, из него в первую строку; для... подробнее

Показать сообщение отдельно
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
14.05.2014, 13:37     Алгоритм Диксона
Что я делаю:
1) Генерируем базис
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
std::vector<std::size_t> &PrimeNumbersProcessor::genPrimesUpToMaxLimit(const std::size_t &limit)
{
    if (limit < 2)
    {
        return m_PrimeNumbers;
    }
    else if (limit == 2)
    {
        m_PrimeNumbers.push_back(2);
        return m_PrimeNumbers;
    }
 
    m_PrimeNumbers.push_back(2);
 
    for (std::size_t i = 3; i <= limit; i++)
    {
        if (isPrime(i))
        {
            m_PrimeNumbers.push_back(i);
        }
    }
    return m_PrimeNumbers;
}
2) Генерируем вектора B и A
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 std::size_t l = static_cast<std::size_t>(std::log(num));
    std::size_t limit = static_cast<std::size_t>(exp(std::sqrt(l * log(l))));
    limit = static_cast<std::size_t>(std::sqrt(limit));
 
    m_Primes.genPrimesUpToMaxLimit(limit);
 
    while (m_Avec.size() != (m_Primes.getGeneratedPrimesList().size() + 1))
    {
        std::size_t tmpB = genRandom();
        std::size_t tmpA = PrimeNumbersProcessor::modPow(tmpB, 2, m_Num);
        if (isSmooth(tmpA))
        {
            std::cout << "This B is ok" << tmpB << std::endl;
            m_Avec.push_back(tmpA);
            m_Bvec.push_back(tmpB);
        }
        else
        {
            std::cout << "This B is BAD" << tmpB << std::endl;
        }
    }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool DixonFactorization::isSmooth(const std::size_t &num)
{
    CanonicalRepresentation tmp(num);
    for (std::size_t i = 0; i < tmp.getRepresentation().size(); i++)
    {
        if (!isInBasis(tmp.getRepresentation().at(i).num))
        {
            return false;
        }
    }
    return true;
 
}
3) Записываем степени из канонического представления чисел из А в матрицу по модулю 2, решаем СЛАУ ( http://eigen.tuxfamily.org/dox/class...1SparseQR.html )
4) На выходе получаем
Кликните здесь для просмотра всего текста
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
==================A====================
35574 2^1 3^1 7^2 11^2 
36504 2^3 3^3 13^2 
53760 2^9 3^1 5^1 7^1 
600 2^3 3^1 5^2 
43264 2^8 13^2 
2904 2^3 3^1 11^2 
66825 3^5 5^2 11^1 
==================B====================
40303
20953
10565
74030
72012
65683
72700
==================Basis================
2
3
5
7
11
13
=====MATRIX=====
1 1 1 1 0 1 0 
1 1 1 1 0 1 1 
0 0 1 0 0 0 0 
0 0 1 0 0 0 0 
0 0 0 0 0 0 1 
0 0 0 0 0 0 0 
==========X-Vector============
0 0 0 0 0 0 0

т.е. все вектора линейно независимы (все элементы в "right hand" матрице считаем равными 0). Как такое может быть? Может я что-то делаю не так?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru