"stdio.h"
int
main()
{
int
d1,d2,r
printf("输入两个正整数:")
scanf("%d
%d",&d1,&d2)
do
{
r=d1%d2
d1=d2d2=r
}while(d2!=0)
printf("最大公约数是:%d",d1)
}
//递归法
#include
"stdio.h"
int
fun(int
d1,int
d2)
{
if(d2!=0)
return
fun(d2,d1%d2)
else
return
d1
}
int
main()
{
int
d1,d2
printf("输入两个正整数:")
scanf("%d
%d",&d1,&d2)
printf("最大公约数是:%d",fun(d1,d2))
}
大公约数将它们分解质因数,找出其中相同的质因数,再将它们相乘,就得到了最大公约数,如果两数的质因数中,没有一个是相同的,那么它们的最大公约数就是1.
比如(56,42)
56=7×2×2×2
42=7×2×3
其中7,2是相同的,那么它们的最大公约数就是2×7=14
***附加:最小公倍数
依照上述方法得到最大公约数后,再乘以其它所有剩下来的数.
比如[56,42]
56=7×2×2×2
42=7×2×3
其中7,2是相同的,它们的最大公约数就是14,剩下来的有2,2,3,将它们相乘,再乘以14,得到14×2×2×3=168,它们的最小公倍数就是168.如果两数的最大公约数是1,那么它们的最小公倍数就是它们的乘积.
(分解质因数:将一个数分解成几个质数的积的形式)
(质因数:除了本身和1之外没有其它约数的数,比如2,3,5,7,11等等,注:1不是质因数)
求两数的最大公约数和最小公倍数,你做的题目多了,速度就自然而然变快了,熟能生巧嘛~~~~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)