2025年- H102-Lc210--3658.奇数和与偶数和的最大公约数(gcd最大公约数)--Java版

1.题目描述

2.思路

a/b=m...n

求最大公约数,用欧几里得算法(在b不为0时,临时变量存余数,a变b,b变n)

while(b!=0)

{

int tmp=a%b;

a=b;

b=tmp;

}

return a

举一个例子

12和5的最大公约数是1

(1)tmp=12%5=2;

a=5,b=2

(2)因为b!=0,

tmp=5%2=1;

a=2

b=1

(3)因为b!=0,

tmp=2%1=0

a=1;

b=0;退出循环

此时公约数就是a=1

3.代码实现

java 复制代码
 public int gcdOfOddEvenSums(int n) {
        int oddsum=0;
        int evensum=0;
        for(int i=1;i<=2*n;i++)
        {
            if(i%2==0)//说明是偶数
            {
                evensum=evensum+i;
            }else
            {
                oddsum=oddsum+i;
            }
        }
       // return gcd(evensum,oddsum);
       int res=gcd(evensum,oddsum);
        return res;

    }
    public static int gcd(int oddsum,int evensum)
    {
        while(evensum!=0)
        {
            int tmp=oddsum%evensum;
            oddsum=evensum;
            evensum=tmp;
        }
        return oddsum;
    }