#include<stdio.h>
unsigned long pgcd(unsigned long a, unsigned long b)
{
if (b == 0)
return a;
return pgcd(b, a % b);
}
unsigned long fibonacci(unsigned long l)
{
unsigned long moinsUn, moinsDeux;
if (l == 0 || l == 1)
return l;
moinsUn = 1;
moinsDeux = 0;
while( l > 1)
{
moinsUn ^= moinsDeux;
moinsDeux ^= moinsUn;
moinsUn ^= moinsDeux;
moinsUn += moinsDeux;
l--;
}
return moinsUn;
}
int main()
{
unsigned long f1, f2, i;
f2 = fibonacci(0);
for(i = 0 ; i <= 40 ; i++)
{
f1 = f2;
f2 = fibonacci(i+1);
printf("pgcd(%lu, %lu) = %lu\n", f1, f2, pgcd(f1, f2));
}
return 0;
}