Fp& Fp::operator/=(const Fp& rhs) {
  mpz_class c;
  invMod(c, rhs.x, p);
  x *= c;
  x %= p;
  return *this;
}
예제 #2
0
int menu(){
    int op;
    fflush(stdin);
    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n-----------MENU-----------\n1-Frase para ASCII\n2-ASCII para Frase\n3-Verificaçao de Inversos Modulares\n4-Raizes Modulares\n0-Sair do programa\n--------------------------\n\n\nDigite sua opçao: ");
    scanf(" %d", &op);
    switch (op){
        case 1:
            printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
            return imprInt(entradaString("\n--------ASCII para Decimal------\n\nDigite a String: "), "\n\n\nASC II: ");
            break;
        case 2:
            printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
            return imprChar(entradaASCII("\n--------Decimal para ASCII------\n\nDigite a String ASCII separando por Espaços e digitando 0 no fim: "),"\n\n\nConversao do codigo ASCII: ", "\n\nErro: string nao recebida\nDigite qualquer tecla para continuar: ");
            break;
        case 3:
            printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
            return imprInvM( invMod(entradaInt("\n\n\n\nDigite o tamanho do conjunto ( Zn ) a ser analizado: ")), "\n\nNao ha inversos modulares neste conjunto Zn\nDigite qualquer tecla para continuar: ");
            break;
        case 4:
            printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
            return imprVet(raizMod(entradaInt("\n\n\n\nDigite o tamanho do conjunto ( Zn ) a ser analizado: "), entradaInt("\n\n\n\nDigite o Radicando n da raiz √n: ")), "\n\n\n Raizes Modulares: ", "\n\nNao ha raizes deste numero nesse conjunto Zn\nDigite qualquer tecla para continuar: ") ;
            break;
        case 0:
            printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nObrigado por usar o programa.\n\n ");
            return 1;
            break;
        default:
            pausa("\n\n\nOpçao incorreta. Digite qualquer tecla para continuar");
            return 0;
    }
    return 0;
}
Fp operator/(const Fp& me, const Fp& rhs) { 
  mpz_class c;
  invMod(c, rhs.x, Fp::p);
  return me * c;
}