7.3课后习题

//求两个正整数的最大公约数
/*
欧几里得算法:对于正整数a和b,连续进行求余运算,直到余数为零,此时非零的除数就是最大公约数。
递归的方法:a>b,a-b和b最大公约数相同,fun(a,b)=fun(a-b,b)
a<b,b-a和a最大公约数相同,fun(a,b)=fun(a,b-a)
a=b,a和b最大公约数相同,fun(a,b)=a=b
*/
#include<stdio.h>
/*
int fun(int a,int b)
{
    int c,d;
    c=0;d=1;
    if(a<b)
    {
        c=a;a=b;b=c;
    }
    while(d!=0)
    {
        d=a%b;
        if(d!=0)
        {
            a=b;b=d;
        }
    }
    return b;
}
*/
int fun(int a,int b)
{
    if(a==b)
    {
        return a;
    }
    else if(a>b)
    {
        return (fun(a-b,b));
    }
    else
    {
        return (fun(a,b-a));
    }
}
int main()
{
    int a,b,c;
    scanf("%d%d",&a,&b);
    c=fun(a,b);
    printf("%d\n",c);
    return 0;
}
/*
5个人分椰子,第一个把椰子分为5等份,还剩下一个给猴子,自己拿了一份;第二个把剩下的椰子分为5等份,还剩下一个给猴子,自己拿了一份;以此类推,直到五个水手都分完。计算并输出这堆椰子至少有多少个?
*/
#include<stdio.h>
int main()
{
    int i,n;
    double j,k;
    i=0;
    while(1)
    {
        n=0;
  k=i*5+1;
        while(n<4)
        {
         k=(k/4)*5+1;
            if(k!=(int)k)
            {
                break;
            }
            n++;
        }
        if(n==4)
        {
            break;
        }
        else
        {
            i++;
        }
    }
    printf("k=%d\n",k);
    return 0;
}
发布了34 篇原创文章 · 获赞 2 · 访问量 471

猜你喜欢

转载自blog.csdn.net/qq_42148307/article/details/104854675
今日推荐