
2026-01-23:奇数和与偶数和的最大公约数。用go语言,给定一个整数 n,记 A 为前 n 项奇数序列(1、3、5、…)的和,B 为前 n 项偶数序列(2、4、6、…)的和。要求返回 A 与 B 的最大公约数。
1 <= n <= 1000。
输入: n = 5。
输出: 5。
解释:
前 5 个奇数的总和 sumOdd = 1 + 3 + 5 + 7 + 9 = 25。
前 5 个偶数的总和 sumEven = 2 + 4 + 6 + 8 + 10 = 30。
因此,GCD(sumOdd, sumEven) = GCD(25, 30) = 5。
题目来自力扣3658。
首先,你需要分别计算前n个奇数的和(A)与前n个偶数的和(B)。
通过数学公式,你可以直接计算出A和B的值,而无需通过循环逐个累加,这非常高效。
在得到奇数和 ( A = n^2 ) 和偶数和 ( B = n(n+1) ) 之后,下一步是计算这两个数的最大公约数。
所以,最终答案就是输入的整数 ( n ) 本身。
解决这个问题的关键在于利用等差数列的求和公式快速计算出奇数和与偶数和,并认识到两个和之间的数学关系(都含有因子n,且n和n+1互质),从而直接得出最大公约数就是n本身。这使得算法非常高效,时间和空间复杂度都是常数。
package main
import (
"fmt"
)
func gcdOfOddEvenSums(n int)int {
return n
}
func main() {
n := 5
result := gcdOfOddEvenSums(n)
fmt.Println(result)
}

# -*-coding:utf-8-*-
def gcd_of_odd_even_sums(n: int) -> int:
return n
def main() -> None:
n = 5
result = gcd_of_odd_even_sums(n)
print(result)
if __name__ == "__main__":
main()
#include <iostream>
using namespace std;
int gcdOfOddEvenSums(int n) {
return n;
}
int main() {
int n = 5;
int result = gcdOfOddEvenSums(n);
cout << result << endl;
return 0;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。