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.代码实现
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;}