Skip to content

Instantly share code, notes, and snippets.

@kira924age
Last active January 2, 2016 06:39
Show Gist options
  • Save kira924age/8265060 to your computer and use it in GitHub Desktop.
Save kira924age/8265060 to your computer and use it in GitHub Desktop.
拡張版ユークリッドの互除法 84x + 11y = 1 (y > 0)
#include <stdio.h>
int main()
{
int L = 84, e = 11;
int x, x2, y, y2, z, z2, q;
int tmp;
x = 1;
y = 0;
z = L;
x2 = 0;
y2 = 1;
z2 = e;
while(z2 != 1){
if (z2 == 0)
break;
q = (z - (z % z2)) / z2;
x = x - (q * x2);
y = y - (q * y2);
z = z - (q * z2);
tmp = x;
x = x2;
x2 = tmp;
tmp = y;
y = y2;
y2 = tmp;
tmp = z;
z = z2;
z2 = tmp;
}
if(y2 < 0)
printf("%d\n", y2 + L);
else
printf("%d\n",y2);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment