求任一两个正整数的最大公约数。

发布时间 2023-04-12 19:36:04作者: 就叫这个名字吧Ci
二、设计思路:
1、输入两个正整数;
2、求第一个正整数的所有可以被整除的约数,存入第一个数组;
3、求第二个正整数的所有可以被整除的约数,存入第二个数组;
4、取出第一个正整数约数的最大值,与第二个正整数的约数从大到小依次比较,是否相等,如果相等,则为最大公约数,如果不等,继续比较,直到与第二个正整数的所有约数比较完毕。再取出第一个正整数约数的第二大约数,重复上述过程,直到第一个正整数所有约数比较完毕,如果有相等,则输出最大公约数。
 

#include<stdio.h>
int main()
{
int i=0;
int m,n,temp;
printf("请输入两个正整数:");
scanf("%d %d",&m,&n);
if(m>n)
{
temp=n;
}else //m=n在此不需要单独讨论
{
temp=m;
}
for(i=temp;i>0;i--) //如果从i=1开始,得出公约数也无法保证其为最大公约数。
{
if(m%i==0 && n%i==0)
break;
}
printf("%d和%d的最大公约数是%d",m,n,i);
return 0;
}