Ethiopian multiplication: Difference between revisions

Content added Content deleted
m (Fixed lang tags.)
Line 501: Line 501:


=={{header|D}}==
=={{header|D}}==
<lang d>import std.stdio;
<lang d>int ethiopian(int n1, int n2) {
int dub(int num) { return num << 1; }
static int doubleNum(int n) { return n * 2; }
int halve(int num) { return num >> 1; }
static int halveNum(int n) { return n / 2; }
bool isEven(int num) { return !(num & 1); }
static bool isEven(int n) { return !(n % 2); }


int ethiopian(int n1, int n2) {
int result;

int ret = 0;
while(n1 >= 1) {
while (n1 >= 1) {
if (!isEven(n1)) ret += n2;
if (!isEven(n1))
n1 = halve(n1);
result += n2;
n2 = dub(n2);
n1 = halveNum(n1);
n2 = doubleNum(n2);
}
}

return ret;
return result;
}
}


int main() {
void main() {
writefln("17 ethiopian 34 is %d", ethiopian(17, 34));
printf("17 ethiopian 34 is %d\n", ethiopian(17, 34));
return 0;
}</lang>
}</lang>