c-使用函数在单行代码中查找GCD



问题是你必须编写一个程序来找到两个数字的GCD,你应该定义一个函数来实现这一点,但挑战是函数体不应该超过1行,并且你只能使用一个分号!我试了这么久,写了这个。你知道吗?

#include <stdio.h>
int bmm(int m, int n) {
while(m!=n) int a = m > n ? m -= n : n -= m;
return m;
}
int main() {
int m, n;
scanf("%d%d", &m, &n);
if (m < 0)m = -m;
if (n < 0)n = -n;
printf("%d", bmm(m,n));
return 0;
}

您可以用递归的方式在一行中解决它:

int gcd(int a, int b)
{
return (b == 0 ? a : gcd(b, a % b));
}

您可以使用if…else语句,如下所示:

#include <stdio.h>
int bmm(int m, int n)
{
while(m!=0&&n!=0)
{
if(m>n)m-=n;
else n-=m;
}
return m;
}
int main() 
{
int m, n;
scanf("%d%d", &m, &n);
if (m < 0)m =- m;
if (n < 0)n =- n;
printf("n GCD = %d", bmm(m,n));
return 0;
}

最新更新