作业帮 > 综合 > 作业

编程提示用户输入两个正整数,并求出它们的最大公约数,分别实现下 面三种算法:

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 17:09:44
编程提示用户输入两个正整数,并求出它们的最大公约数,分别实现下 面三种算法:
算法1:设输入的两个正整数为n1和n2,把最大公约数存储到变量gcd中,
gcd的初值为1,依次检查k=2,3等等是否为公约数,找到一个新
的公约数时则用k的值更新gcd,直到k大于n1或n2.此时的gcd即
为所求的最大公约数.
算法2:设输入的两个正整数为n1和n2,首先求n1和n2的最小值d,然后
依次检验d,d-1,d-2,...,2,1是否是n1和n2的公约数,这样
找到的第一个公约数即为最大公约数.
算法3:设输入的两个正整数为n1和n2,其最大公约数为gcd(n1,n2),则:
如果n1%n2为0,则gcd(n1,n2)等于n2,否则gcd(n1,n2)等于
gcd(n2,n1 % n2).
算法一:
#include
main()
{
int n1,n2,gcd=1,k=2;
scanf("%d %d",&n1,&n2);
while(k0;i--)
if(n1%i==0&&n2%i==0)
printf("最大公约数为:%d\n",i);
}
算法三:
#include
void main()
{
int gcd(int n1,int n2);
int n1,n2,k;
scanf("%d %d",&n1,&n2);
k=gcd(n1,n2);
printf("最大公约数为:%d\n",k);
}
int gcd(int n1,int n2)
{
if(n1%n2==0)
return n2;
else
return gcd(n2,n1%n2);
}
希望能帮助你,如有疑问请登录http://we.share.lc在线为您解答!