输入一个正整数nn<=100000求1到n的奇数和和偶数和,使用Java
时间: 2025-03-16 14:09:58 浏览: 10
这是一个典型的累加问题,需要分别计算从 1 到 n 的所有奇数之和以及偶数之和。我们可以通过简单的条件判断结合循环结构完成任务。
下面是完整的 Java 实现代码及解析步骤。
分析与思路
- 首先初始化两个变量用于存储奇数和与偶数和的结果。
- 使用
for
循环遍历从 1 到 n 的每一个数字,并对每个数字进行检查:- 如果当前数字是奇数 (
i % 2 != 0
),将其加入奇数和; - 否则将其加入偶数和。
- 如果当前数字是奇数 (
- 最后打印出这两个累计值即可。
时间复杂度为 O(n),空间复杂度为 O(1)。
示例代码
以下是用 Java 编写的解决方案:
import java.util.Scanner;
public class OddEvenSum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入一个正整数n <= 100000
System.out.print("请输入一个正整数n (<= 100000): ");
int n = scanner.nextInt();
if (n > 100000 || n < 1) {
System.out.println("输入范围错误!");
return;
}
long oddSum = 0; // 存储奇数和
long evenSum = 0; // 存储偶数和
for (int i = 1; i <= n; i++) {
if (i % 2 == 0) { // 偶数
evenSum += i;
} else { // 奇数
oddSum += i;
}
}
System.out.println("1到" + n + "之间的奇数和为: " + oddSum);
System.out.println("1到" + n + "之间的偶数和为: " + evenSum);
scanner.close();
}
}
运行示例
假如用户输入 n=10
,程序输出如下内容:
请输入一个正整数n (<= 100000): 10
1到10之间的奇数和为: 25
1到10之间的偶数和为: 30
这是因为在这个范围内,奇数分别是 [1, 3, 5, 7, 9] 和偶数分别是 [2, 4, 6, 8, 10].
提升效率的方式
实际上无需逐一相加也可以直接采用数学公式快速得到答案:
- 所有奇数构成等差序列:首项 a₁=1、公差 d=2;前 m 项和公式 S_odd=m×m 其中 m=(n+1)/2.
- 对于偶数同样存在类似的简化算法 S_even=n*(n/2).
这种方法可以进一步优化性能尤其是针对更大的数据量情况。
相关推荐







