Ahoj
nemohl by mi někdo poradit jak v C na nejmenší společnej násobek n čísel....čísla jsou zadána v poli, už se to snažím udělat od rána a vůbec mi to nejde.
a co tak vyuzit asociativitu operatoru najmensi spolocny nasobok tj
lcm(a,lcm(b,c)) = lcm((lcm(a,b),c)
pricom lcm(a,b) sa spocita zo vztahu a*b=gcd(a,b)*lcm(a,b)
takze spravis najmensi spolocny nasobok prvych 2 a potom vezmes vysledok a spravis lcm s dalsim a zas vezmes vysledok a s dalsim az po n... a mas vysledok
ps: gcd - najmensi spolocny delitel sa pocita euklidovym algorimom ;)
a aby sa nepovedalo ze som lenivy tak kod :)
int gcd(int a,int b) {
if (a<b)
return gcd(b,a);
if (b==0)
return a;
a%=b;
return gcd(b,a);
}
int lcm(int a,int b) {
return a*b/gcd(a,b);
}
int lcma(int *array,int n) {
int i,r;
if (n==1)
return array[0];
r = lcm(array[0],array[1]);
for (i=2;i<n;i++)
r = lcm(r,array[i]);
return r;
}
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku