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;
}