求1+2+3+4+…+n的和,最简单的方式就是暴力循环求和,实例代码如下:
import java.util.Scanner;
public class Sum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long n = scanner.nextLong();
int sum=0;
for(int i =1;i<=n;i++) {
sum+=i;
}
}
}
时间复杂度为O(n),但是当数值非常大的时候暴力求解往往会超时,所以我们可以利用我们的数学知识去求解,我们都知道等差数列的前n项和的公式是:Sn = n*(n+1)/2,示例代码如下:
import java.util.Scanner;
public class Sum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long n = scanner.nextLong();
long result = ((1+n)*n)/2;
System.out.println(result);
}
}
时间复杂度是O(1)级别,无论n多大都可以很快算出来。