#include<stdio.h> #include<conio.h> int menu(void); int euclides(int x,int y); int sa,tb; main(){ int op,s,t; int a,b,m,cociente,resultado,mcd; do{ op=menu(); switch(op){ case 1: printf("Introduce el valor de a:n"); scanf("%d",&a); printf("Introduce el valor de b:n"); scanf("%d",&b); printf("Introduce el valor del modulo:n"); scanf("%d",&m); mcd=euclides(a,m); if(b%mcd) printf("No existen soluciones para esta congruencian"); else{ cociente=b/mcd; s=sa*cociente; t=tb*cociente; printf("La combinacion lineal es:n"); printf("%d= %d(%d)+%d(%d)n",mcd,a,sa,m,tb); printf("%d= %d(%d)+%d(%d)n",mcd*cociente,a,s,m,t); printf("nLas soluciones de la congruencias son:"); printf("nx=%d(k)+%d (k en Z)n",m,s); } break; case 2: printf("Introduce el valor de b:n"); scanf("%d",&b); printf("Introduce el valor del modulo:n"); scanf("%d",&m); resultado=b%m; printf("El resultado es:n x=%d",resultado); break; } if(op<1||op>3) printf("Opcion incorrecta!n"); }while(op!=3); } int menu(void){ int op; printf("ntMENU DE CONGRUENCIASn"); printf("t1.-ax=b mod nn"); printf("t2.-x=b mod nn"); printf("t3.-Salirn"); scanf("%d",&op); return (op); } int euclides(int x,int y){ int residuo=1,cociente,temp1,temp2; int s=1,s1=0,t=0,t1=1,a,b; temp1=x; temp2=y; while(residuo!=0){ cociente=x/y; residuo=x%y; if(residuo<0){ if(cociente<0) cociente-=1; if(cociente>=0)cociente+=1; residuo=x-(y*cociente); } a=s-cociente*s1; b=t-cociente*t1; printf("%d = (%d)X(%d) + %dn",x,y,cociente,residuo); x=y; y=residuo; s=s1; s1=a; t=t1; t1=b; } if(x<0) x=-x; sa=s; tb=t; return x; }
Para enviar comentarios debes estar registrado.
(c) ElRincondelC.com
Un proyecto de Urlan Heat : proyectos de Internet y soporte para el comercio electrónico.