当前位置: 首页 > 知识库问答 >
问题:

由用户输入提供的L1和L2范围内的奇数和偶数相加

邢弘业
2023-03-14

我正在努力完成这项任务。用户正在提供L1和L2号。将L1、L2范围内的所有奇数和该范围内的所有偶数相加,并显示总和。我必须用3种方法来实现它,使用:for、while和do-while循环。我的for循环工作得很好,但while显示了一些更高的分数。

import java.util.Scanner;

public class PPO4b {

    public static void main(String[] args) {
        
        Scanner value1Check = new Scanner(System.in);
        System.out.println("Provide first value: ");
        int value1 = value1Check.nextInt();
        
        Scanner value2Check = new Scanner(System.in);
        System.out.println("Provide second value: ");
        int value2 = value2Check.nextInt();

        int sumOdd = 0;
        int sumEven = 0;
        int i = 0;

        while (i <= 0) {
            if (i % 2 == 1) {
                sumOdd = sumOdd + i;
            } else {
                sumEven = sumEven + i;
            }
            i = i + 1;
        }
        System.out.println("Sum is equal to: " + sumEven);
        System.out.println("Sum is equal to: " + sumOdd);
    }
}
 

共有1个答案

凌嘉勋
2023-03-14

通过一点数学,你可以在0(1)分钟内完成这项工作。

  • 对于从1到n值的总和,n(n 1)/2将给出总和

现在有足够的信息来计算s和e之间的偶数和奇数之和。

对于给定的int e和int s;

int totalSum = ((e+s)*(e-s+1))/2;
e = (e|1);
s = (e-1)|1;
int evenCount = (e-s)/2;
int sumEven = ((e - s + 1) * (evenCount))/2;
int sumOdd = totalSum - sumEven;

下面是如何验证它。

  • 使用范围的IntStream计算偶数和奇数和,根据需要过滤掉偶数和奇数值
  • 接下来使用上述方法计算相同的值。
  • 比较相应的总和并报告任何差异。
Random rnd = new Random();
for (int i = 0; i < 200000; i++) {
    int s = rnd.nextInt(200) +100;
    int e = rnd.nextInt(500) + s;
    int compEven = IntStream.rangeClosed(s, e)
            .filter(r -> r % 2 == 0).sum();
    int compOdd = IntStream.rangeClosed(s, e)
            .filter(r -> r % 2 == 1).sum();
    long compEvenCount = IntStream.rangeClosed(s, e)
            .filter(r -> r % 2 == 0).count();
    
    int mySum = (e + s) * (e - s + 1) / 2;
    e |= 1;
    s = (s - 1) | 1;
    int evenCount = (e - s + 1) / 2;
    int evenSum = ((e + s) * evenCount) / 2;
    int oddSum = mySum - evenSum;
    if (evenSum != compEven || oddSum != compOdd) {
        System.out.println("Oops - sums don't match");
    }
}
        
 类似资料:
  • 嗨,这是我正在做的课程上的一个问题。。。 > 程序打印“键入数字”,直到用户键入数字-1。当用户键入数字1时,程序打印“谢谢,稍后再见!”!“并结束 程序应该打印用户输入的数字的总和(不带数字-1) 程序应该打印用户键入的数字(没有数字-1) 程序应该打印用户键入的数字的平均值(没有数字-1)。 5.程序应该打印用户键入的偶数和奇数的数量(没有数字-1)。 我已经完成了1-4,但完全停留在5。我确

  • 本文向大家介绍L1和L2正则相关面试题,主要包含被问及L1和L2正则时的应答技巧和注意事项,需要的朋友参考一下 参考回答: L范数(L1 norm)是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。比如 向量A=[1,-1,3],那么A的L1范数为 |1|+|-1|+|3|.简单总结一下就是: L1范数: 为x向量各个元素绝对值之和。 L2范数

  • 我想得到用户输入的所有奇数和偶数,然后得到所有奇数的乘积和偶数的差值。例如:输入一个字符串:dfgi456456=';]=34521。输出应该显示用户输入中的所有奇数和偶数以及乘积和差值,在这种情况下,奇数是:5,3,1偶数是:4,6,2奇数的PRODUCT(乘法答案):15偶数的DIFFERENCE(减法答案):-4。请查看我下面的代码。任何帮助都将不胜感激。谢谢。 }

  • 本文向大家介绍L1和L2正则化的区别相关面试题,主要包含被问及L1和L2正则化的区别时的应答技巧和注意事项,需要的朋友参考一下 参考回答: L1是模型各个参数的绝对值之和,L2为各个参数平方和的开方值。L1更趋向于产生少量的特征,其它特征为0,最优的参数值很大概率出现在坐标轴上,从而导致产生稀疏的权重矩阵,而L2会选择更多的矩阵,但是这些矩阵趋向于0。

  • 从本论坛上的前一个问题中,我了解到,在大多数内存系统中,一级缓存是二级缓存的子集,这意味着从二级缓存中删除的任何条目也将从一级缓存中删除。 所以现在我的问题是如何为L2缓存中的条目确定L1缓存中的相应条目。存储在L2条目中的唯一信息是标签信息。基于此标记信息,如果我重新创建addr,如果L1和L2缓存的行大小不相同,它可能会跨L1缓存中的多行。 体系结构是否真的为刷新这两条缓存线而烦恼,还是只维护

  • 本文向大家介绍奇数和偶数之和之间的差。,包括了奇数和偶数之和之间的差。的使用技巧和注意事项,需要的朋友参考一下 问题陈述 对于给定的长整数n,编写一个程序以查找奇数位和偶数位总和之间的差是否为0。索引从0开始。 示例 示例 以下是Java中的程序,用于查找所需的输出。 输出结果