Java 程序显示数字和前 N 个自然数的总和

javaobject oriented programmingprogramming

自然数都是正整数或整数,范围从 1 到无穷大。在本文中,我们将了解如何在 Java 中显示数字以及前 N 个自然数的总和,其中 n 由用户定义。从数学上讲,前 N 个自然数的总和由公式给出 -

Sum = n * (n+1) / 2

为了在 Java 中实现这一点,主要有 3 种略有不同的方法。

1. 使用 for 循环或 do while 循环或 while 循环

这里的方法很简单。我们从用户那里获取输入以确定 n 的值。变量 sum 初始化为 0。然后我们运行从 1 到 n 的 for 循环。在每次迭代中,都会打印循环变量的值,并将该值添加到 sum 变量中。循环终止后,我们再打印总和。

在此方法中,时间复杂度为 O(n),其中 n 是必须执行所有计算的自然数。原因是循环运行 n 次来计算总和并打印前 n 个自然数。

示例

public class Main {
   public static void main(String[] args) {
   
    int n = 5; // 存储用户输入的 n 的值
    int sum = 0; // 存储总和
    
    System.out.print("前 " + n + " 个自然数是:");
    for (int i = 1; i <= n; i++) {
        /* For 循环从 1 到 n,在迭代过程中打印每个数字并不断将其添加到 sum 变量中 */
        
        System.out.print(i + " ");
        sum += i;
    }
    System.out.println("");
    System.out.println("\n 前 " + n + " 个自然数的总和是: " + sum); // 打印总和
   }
}

输出

上述程序将产生以下输出 -

前 5 个自然数为:1 2 3 4 5
前 5 个自然数的总和为:15

2. 使用数学公式

该方法与上述方法非常相似,只是存在一个微小的差异,但准确度相对较高。我们不会在迭代过程中反复将数字添加到总和中,而是仅在循环中打印自然数,而总和是在循环之前使用公式 SUM = N * (N+1)/2

计算的

在此方法中,时间复杂度为 O(1),因为程序通过上述公式计算前 n 个自然数的总和。无论 n 的值如何,这都需要一个恒定的时间。然而,由于程序使用 for 循环来显示数字并运行 n 次,因此程序的总体时间复杂度仍然为 O(n)

示例

public class Main {
   public static void main(String[] args) {
    int n = 5; // 存储该用户的 n 的值
    int sum = (n * (n + 1)) / 2; // 使用公式方法计算总和
    System.out.print("前 " + n + " 个自然数是:");
    for (int i = 1; i <= n; i++) {
        /* For 循环从 1 到 n,在迭代过程中打印每个数字 */
        System.out.print(i + " ");
    
    }
    System.out.println(" ");
    System.out.println("\n前 " + n + " 个自然数的总和是: " + sum); //打印总和
   }
}

输出

上述程序将产生以下输出 -

前 5 个自然数为:1 2 3 4 5
前 5 个自然数的总和为:15

3. 使用递归

此处的方法是,用户定义的函数 sumOfNaturals(int n) 递归调用自身,直到达到递归的基数。此处的基数是当 n 等于 1 时。如果没有达到基数,函数将返回 n + 对 sumOfNaturals(n-1) 函数调用的结果。for 循环负责打印数字。

此处的时间复杂度为 O(n),其中 n 对应于要显示和求和的自然数。其背后的原因是函数 sumofNaturals(n) 对从 n 到 1 的每个 n 值执行一次加法运算和一次函数调用。因此,执行的运算次数与 n 成正比。

示例

public class Main {
   public static int sumOfNaturals(int n) {
   
      if (n == 1) {
         return 1;
      }
      return n + sumOfNaturals(n-1);
   }
   
   public static void main(String[] args) {
      int n = 5;
      int sum = sumOfNaturals(n);
      System.out.print("The first " + n + " natural numbers are: ");
      for (int i = 1; i <= n; i++) {
         System.out.print(i + " ");
      }
      System.out.println();
      System.out.println("\nThe sum of the first " + n + " natural numbers is: " + sum);
   
   }
}

输出

上述程序将产生以下输出 -

前 5 个自然数为:1 2 3 4 5
前 5 个自然数的总和为:15

结论

用 Java 编写程序以显示前 n 个自然数并同时计算它们的总和对于学习 Java 的人来说是一个很好的起点。这里演示了循环、执行算术运算和递归等基本概念。第一种方法使用 fall 循环来显示和计算总和。第二种方法利用数学公式来查找总和并使用 for 循环来打印所有数字。第三种方法利用迭代来计算总和,而其余方法保持不变。

所有方法都具有总体线性时间复杂度。第一种方法求和并显示时间为 O(n),第二种方法求和时间为 O(1),但显示数字时间为 O(n)。第三种方法打印时间为 O(n),计算时间为 O(n),总时间为 O(n)。


相关文章