5 Şubat 2010 Cuma

Hızlı Modüler Üs Alma Algoritması

//HIZLI MODÜLER ÜS ALMA ALGORİTMASI

#include<stdio.h>

int main(){

int a, b, m;//taban , üs ve mod değişkeni
int c=0, d=1, i, k=0;//k sayaç
int on;
int binary[100];//üssün ikilik karşılığı

printf("\ntaban olacak sayiyi giriniz:(a)");
scanf("%d",&a);
printf("\nus olacak sayiyi giriniz:(b)");
scanf("%d",&b);
printf("\nmod olacak sayiyi giriniz:(m)");
scanf("%d",&m);

on=b; //b yi ikiliye çevir binary[] dizisine ata,rakam sayısını k ya ata
while (on>0)
{
binary[k]=on % 2;
on = on / 2;
k++;
}

/*for(i=0;i<k;i++)
printf("%d", binary[i]);*/

for(i=0;i<k;i++){//hızlı üs alma algoritması

c=2*c;

d=(d*d)%m;

if(binary[k-1-i]==1){
c++;
d=(d*a)%m;
}
printf("\n%d\t%d\t%d",binary[k-1-i],c,d);//ekrana yazdırma
}

printf("\n");
return 0;
}

1 yorum:

  1. Merhaba paylasiminiz icin tesekkurler. Yalniz bir sey aklima takildi.Kodda d yi ne amacla kullaniyoruz binary methoddan mi ortaya cikan birsey

    YanıtlaSil