java输入一个整数输出偶数相加和_java题,键盘输入一个整数n,求n以内所有偶数的和。求速解...

展开全部

我这e68a8462616964757a686964616f31333337616631里简单解释一下,对于n以内的偶数的个数为n/2,这里有人也许会怀疑n=1时,n/2=0.5啊,这里Java中整数的除法相当于向下取整,n/2=0,因此,这个写法是没有问题的;但是对于偶数n=4时,带入4/2=2,出问题了,4以内的偶数只有一个2,这里算出来是两个,怎么解决,这里采用对n-1,之后再除以2的算法,把奇数带入,发现是没有问题的。

这里我们假设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

最后再说一下,这个算法的效率要比循环判断的效率高一些

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值