用户输入两个数,求这两个数的最大公约数。
实例-使用for和if#includestdio.hintmain()
{intn1,n2,i,gcd;printf("输入两个正整数,以空格分隔:");
scanf("%d%d",n1,n2);for(i=1;i=n1i=n2;++i){//判断i是否为最大公约数if(n1%i==0n2%i==0)gcd=i;
}printf("%d和%d的最大公约数是%d",n1,n2,gcd);return0;
}
运行结果:
输入两个正整数,以空格分隔:和的最大公约数是9实例-使用while和if
#includestdio.hintmain()
{intn1,n2;printf("输入两个数,以空格分隔:");
scanf("%d%d",n1,n2);while(n1!=n2){if(n1n2)n1-=n2;
elsen2-=n1;
}printf("GCD=%d",n1);return0;
}
运行结果:
输入两个数,以空格分隔:81GCD=9实例-适用正数和负数
#includestdio.hintmain()
{intn1,n2;printf("输入两个数,以空格分隔:");
scanf("%d%d",n1,n2);//如果输入的是负数,将其转换为正数n1=(n10)?n1:-n1;
n2=(n20)?n2:-n2;while(n1!=n2){if(n1n2)n1-=n2;
elsen2-=n1;
}printf("GCD=%d",n1);return0;
}
运行结果:
输入两个数,以空格分隔:81-GCD=9实例-使用递归
#includestdio.hinthcf(intn1,intn2);intmain()
{intn1,n2;printf("输入两个正整数:");
scanf("%d%d",n1,n2);printf("%d和%d的最大公约数为%d",n1,n2,hcf(n1,n2));return0;
}inthcf(intn1,intn2)
{if(n2!=0)returnhcf(n2,n1%n2);
elsereturnn1;
}
预览时标签不可点收录于话题#个上一篇下一篇