Алгоритм Горнера

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by cheater_man, 9 Dec 2009.

  1. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Выкладываю исходники возведения в степень по Горнера, 2 подхода(может кому пригодится, и в инете алгоритма почти нигде нет, пришлось рыться в книгах) :) .
    1
    Code:
     
     y = 1;
                    r = (a * a) % m;
                    for (int i = 0; i <= stepen.Length-1; i++)
                    {
                        if (i >= stepen.Length-1)
                        {
                            if (ch[i] == '1')
                                y = (y * a) % m;
                        }
                        else
                        {
                            if (ch[i] == '1')
                                y = ((y * y) * r) % m;
                            else { y = (y * y) % m; }
                        }
    
    2
    Code:
     r = a;
                    if (x % 2 == 0)//четное
                        y = 1;
                    else//нечетное
                        y = a;
                    label16.Text = label16.Text + y.ToString() + ". ";
                    for (int i = stepen.Length - 2; i >= 0; i--)
                    {
                        r = (r * r) % m;
                            if (ch[i] == '1')
                                y = (y * r) % m;
                    }
    
    Если нужны исходники на С# пишите :)
     
    1 person likes this.
  2. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    Этот алгоритм принято называть схемой Горнера и гугл отлично знает про неё:
    [​IMG]

    Но, думаю, лишним не будет - лишь бы правильно было реализовано.
     
  3. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Схема то схемой, но алгоритма к этой схема(подробного нигде нет) :)
     
  4. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    ты хоть сделай функцию а то я смотрю уставший на этот код и не понимаю где тут на что возводится.
     
    _________________________