如何通过欧几里德算法计算两个数的gcd

时间:2013-02-10 11:50:44

标签: c

我写了一个示例程序来计算两个数字的gcd。这是:

#include stdio.h

int main(void) {
    int m, n, rem;

    printf("Enter two numbers consecutively(with a space between them): ");
    scanf("%d %d", &m, &n);

    while (m) {
        n = m % n; //problem here 
        n = rem;
    }

    printf("%d is the GCD", rem);

    return 0;
}          

我认为我应该将模数运算符语句的输出存储在rem中,但到目前为止,我的程序没有响应给定的任何输入。有人能给我一些线索。

3 个答案:

答案 0 :(得分:2)

  

有人能给我一些线索。

对于初学者,你不会在循环中更改m,因此无法结束。

答案 1 :(得分:1)

  

有人能给我一个线索

rem未设置初始值,您尝试在循环中将n的值更改两次。

答案 2 :(得分:0)

如果你在计算机程序的上下文之外,但是使用变量,你会如何手动使用Euclidiean算法,这可能是一个好主意。无论如何:

    n = m % n; //problem here 
    n = rem;

这将如何实现?你说“n =一件事”,然后“n =另一件事”,但在此期间你没有做任何事情。