2024-09-14 01:43:38
我这里简单解释一下,对于n以内的
这里我们假设int half = (n-1)/2,此时的half就是偶数的个数。
则此时要求的和int sum = (2+4+...+2*half),此时发现公因子2,对吧,提出来结果就变为下面的形式:sum = 2(1+2+...+half);对于后面括号里的内容,好熟悉啊,对吧,等差为1的等差数,列带入公式(1+2+...+half)=(1+half)*half/2;如果忘记了那就想一下1到10求和的方法,好的,到此时我们括号里的内容用下面的部分代替:sum=2*(1+half)*half/2;之后把这个式子中多余的2消去,得到sum=(1+half)*half。到这里我们的理论上的支撑结束,简单总结一下上述过程:
0. 输入正整数n;
求出half=(n-1)/2;
求出sum=(1+half)*half;
输出sum;
整个代码的过程如下:
import java.util.Scanner;
public class SumEven {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个正整数");
int n = sc.nextInt();
int half = (n-1)/2;//n以内的所有的整数的一半,若包含n,此处不减一
int sum = (1+half)*half;//求和,利用数学中的等差数列求和公式,化简后的结果
System.out.println(n+"以内的偶数的和为:"+sum);
}
}
结果如下:
输入一个正整数
10
10以内的偶数的和为:20
最后再说一下,这个算法的效率要比循环判断的效率高一些
2024-09-14 05:25:17
import java.util.Scanner;
public class AddNums {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个整数");
int x = sc.nextInt();
int sum = 0;
//如果不包含x, 那么i<x
for (int i = 0; i <= x; i++) {
if (i % 2 == 0) {
sum = i + sum;
}
}
System.out.println(x+"以内的偶数和是:"+sum);
}
}
输出
输入一个整数
10
10以内的偶数和是:30
非常谢谢你,不过我搞错了,要用while语句实现,能再来下吗?拜托了
2024-09-14 07:40:51