sgd.cDenna kod är public domain. Om ni hittar fel eller vill ändra något i koden blir jag jätteglad om ni skickar dessa ändringar till jesper [at] fantasi [punkt] se.
/* Funktionen SGD använder Euklides algoritm för att finna den största
* gemensamma delaren mellan två tal. Om detta tal är ett säger man
* att talen är relativt prima.
*/
#include<stdlib.h>
#include<stdio.h>
static int sgd_rekursiv(int a, int b)
{
if (b == 0)
return a;
return sgd_rekursiv(b, a % b);
}
static int sgd_ickeRekursiv(int a, int b)
{
while(b != 0)
{
int tmp = a;
a = b;
b = tmp % b;
}
return a;
}
int main(int argc, char* argv[])
{
/* Vi måste kontrollera argumenten! */
if (argc != 3)
{
printf("Usage: sgd n1 n2\n");
return EXIT_FAILURE;
}
/* Gör om argumenten till tal och anropa sgd */
printf("Största Gemensamma Delare\n");
printf("Rekursiv: %d\n", sgd_rekursiv(atoi(argv[1]), atoi(argv[2])));
printf("Icke rekursiv: %d\n",
sgd_ickeRekursiv(atoi(argv[1]), atoi(argv[2])));
return EXIT_SUCCESS;
}
|