Pessoal, boa tarde!
Estou desenvolvendo um trabalho na Universidade referente à criptografia RSA e preciso montar a seguinte equação: c = m ^ 13 mod 697.
Vou trabalhar com números grandes e preciso utilizar ponto flutuante duplo(double).
Montei o programa abaixo para ir testando a equação.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double dNum;
double dNum2;
dNum = pow(17,13);
dNum2 = fmod(dNum,697);
printf("\n%d\n\n",(int)dNum2);
system("pause");
return 0;
}
Acontece que com alguns valores o resultado da expressão não confere.
No exemplo acima o resultado deve ser 391 e aparece 390.
Se for utilizado o valor 20 no lugar de 17 o resultado da expressão exibe o valor correto, ou seja, 692.
Desde já, obrigado pela colaboração.