题目:最大公约数问题
计算两个正整数m,n的最大公约数
解题思路:
例如:Gcd(60,24)=
当t=24,无法整除60,24
t=23,无法整除……
t=22,无法整除……
……
t=12同时除尽60,24,返回t值。
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int t=0, m, n;
printf("请输入两个整数:");
scanf_s("%d%d",&m,&n);
t = m < n ? m : n;
for (int i = t; t > 0;t--) {
if (m % t == 0 && n % t == 0) {
printf("最大公约数为:%d",t);
break;
}
}
}
运行截图:
总结归纳:
基于最大公约数的定义:同时整除两个整数的最大整数,显然不会大于两个整数的最小者。故令t=min{m,n},用t除以m,n ,如果能除尽,t是最大公约数;否则令t=t-1,继续尝试。