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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Vlad1993
7 / 3 / 1
Регистрация: 08.08.2012
Сообщений: 63
Завершенные тесты: 3
#1

Реализация дискретного логарифма метод Полларда-ро - C++

21.09.2012, 01:19. Просмотров 1308. Ответов 0
Метки нет (Все метки)

Реализация дискретного логарифма метод Полларда-ро
код С++
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
#include<iostream>
 
using namespace std;
 
int main(void){
    int a,b,n,x[100],c[100],d[100];
    cin>>a>>b>>n;
    x[0]=1;
    int i=0;
    while(1){
        if(i%2==0 && x[i]==x[i/2] && i!=0)
            break;
        if(x[i]>=0 && x[i]<=n/3)
            x[i+1]=x[i]*b%n;
        else
            if(x[i]>n/3 && x[i]<=n*2/3)
                x[i+1]=x[i]*x[i]%n;
        else
            if(x[i]>n*2/3 && x[i]<n)
                x[i+1]=x[i]*a%n;
        cout<<x[i+1]<<" ";
        c[0]=d[0]=0;
        if(x[i]>=0 && x[i]<=n/3)
            c[i+1]=c[i]%n;
        else
            if(x[i]>n/3 && x[i]<=n*2/3)
                c[i+1]=2*c[i]%n;
        else
            if(x[i]>n*2/3 && x[i]<n)
                c[i+1]=(c[i]+1)%n;
        cout<<c[i+1]<<" ";
        if(x[i]>=0 && x[i]<=n/3)
            d[i+1]=(d[i]+1)%n;
        else
            if(x[i]>n/3 && x[i]<=n*2/3)
                d[i+1]=2*d[i]%n;
        else
            if(x[i]>n*2/3 && x[i]<n)
                d[i+1]=d[i]%n;
        cout<<d[i+1]<<endl;
        i++;
    }
return 0;
}
Почему неправильно строятся массивы x,c,d
должно быть так:
i xi ai bi x2i a2i b2i
1 9 0 1 18 1 1
2 18 1 1 4 4 2
3 17 2 1 4 8 6
4 4 4 2 4 16 14
5 17 4 3 4 32 30
6 4 8 6 4 64 62, а у меня 8 вместо 12 итераций и вектор аі получился 0

Добавлено через 1 час 6 минут
Если у кого-то есть нормальный код поделитесь пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2012, 01:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализация дискретного логарифма метод Полларда-ро (C++):

ро-метод Полларда - C++
Здравствуйте! Задание такое: Реализовать ро-метод Полларда факторизации челых чисел на примере 32 битовых чисел. Давно есть код сделаный на...

Производный класс: метод возведения в произвольную степень, и метод для вычисления логарифма числа - C++
Реализовать класс-оболочку Number для числового типа float. Реализовать методы сложения и деления. Создать производный класс Real, в...

блок-схема к ро-методу Полларда - C++
Доброго времени суток. Есть программа, нужно нарисовать к ней блок-схему. Собственно далек от этого дела, поэтому помогите пожалуйста если...

Нужно реализовать Ро-алгоритм Полларда - C++
Ребят вообщем нужно реализовать этот алгоритм.. Но что то я не пойму как... Нужно разложить число 248713. Должны получится...

ро-метод Полларда дискретного логарифмирования - C (СИ)
Добрый день. Задача: Элемент a имеет порядок q по модулю p. Найти дискретный логарифм x - такое целое число 1&lt;x&lt;q, что a^x = b (mod...

Вычисление Дискретного Логарифма - C#
Делаю курсовую. Подскажите какой алгоритм вычисление дискретного логарифма самый быстрый. Нужно работать как с маленькими, так и с очень...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2012, 01:19
Привет! Вот еще темы с ответами:

Вычисление Дискретного Логарифма! - Алгоритмы
Привет всем. Вообще такое дело: Мне дали курсовую, называется &quot; Вычисление дискретного логарифма&quot;. Я почитал про алгоритмы и не знаю какой...

Вычисление дискретного логарифма online - Алгебра
Здравствуйте! Нужно вычислить дискретный логарифм. Числа достаточно большие для самостоятельного счёта - 48 бит. Говорят, есть...

Метод факторизации Полларда (p-1) - Pascal ABC
Весь форум облазил но не нашёл, пришлось зарегаться. Очень нужно реализовать в Pascal ABC метод факторизации Полларда (p-1) по данному...

ро-метод Полларда (факторизация числа) - Delphi
Доброго времени суток! Необходимо написать ро-алгоритм Полларда. Взял Кнута с его &quot;Искусство программирования&quot;, реализовал. Но программа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.