Fp& Fp::operator/=(const Fp& rhs) { mpz_class c; invMod(c, rhs.x, p); x *= c; x %= p; return *this; }
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; }