输入n跟m两数,求两个数的最大公约数,跳出循环出错,一直输出结果

输入n和m两数,求两个数的最大公约数,跳出循环出错,一直输出结果。
题目很简单

要求是输入n和m两数,求两个数的最大公约数,我已经写出来了,可以不知道怎么跳出下面的循环,

比如我输入20和50 

然后结果就一直在输出this is 10....没办法跳出循环..我把break加在printf("this is %d\n",r);后面结果没办法输出了。

思路卡在这里了,感谢大家解答一下。
#include<stdio.h>
 void main()
 {
int n,m,r;
printf("pealse input two diginals\n");
scanf("%d,%d",&n,&m);
if(n>m) r=m;
else r=n;
while(r>=1)
{if(n%r==0&&m%r==0) printf("this is %d\n",r);
else r--;}
 
 }

------解决方案--------------------
没人会吐槽你,大家都是一步一步学习琢磨出来的
------解决方案--------------------
探讨

C/C++ code
  int gcd(int a,int b)
  {
  int temp;
  if(a<b)
  {
  temp=a;
  a=b;
  b=temp;
  }
  while(b!=0)
  {
  temp=a%b;
  a=b;
  b=temp;
  }
  return a;
  }