Ethiopian multiplication: Difference between revisions
Content added Content deleted
m (Fixed lang tags.) |
|||
Line 501: | Line 501: | ||
=={{header|D}}== |
=={{header|D}}== |
||
<lang d> |
<lang d>int ethiopian(int n1, int n2) { |
||
int |
static int doubleNum(int n) { return n * 2; } |
||
int |
static int halveNum(int n) { return n / 2; } |
||
bool isEven(int |
static bool isEven(int n) { return !(n % 2); } |
||
int result; |
|||
int ret = 0; |
|||
while(n1 >= 1) { |
while (n1 >= 1) { |
||
if (!isEven(n1)) |
if (!isEven(n1)) |
||
result += n2; |
|||
n1 = halveNum(n1); |
|||
n2 = doubleNum(n2); |
|||
} |
} |
||
return |
return result; |
||
} |
} |
||
void main() { |
|||
printf("17 ethiopian 34 is %d\n", ethiopian(17, 34)); |
|||
return 0; |
|||
}</lang> |
}</lang> |
||