题目:编程求:∑1+∑2+……+∑100;
提供三种解法:
第一种:
public class Demo2 {
public static void main(String[] args) {
Demo2 d2=new Demo2();
d2.arithmetic1();
d2.arithmetic2();
d2.arithmetic3();
}
private void arithmetic1(){
Scanner input=new Scanner(System.in);
System.out.print("请输入一个数:");
int num=input.nextInt();
int sum=0;
//嵌套两个for循环
/*
* 外层为加法算式个数
* 内层为加法算式和
*/
for (int i = num; i>=1 ; i--) {
for (int j = 1; j<=i; j++) {
sum+=j;
}
}
System.out.println("计算结果:"+sum);
}
private void arithmetic2() {
Scanner input=new Scanner(System.in);
System.out.print("请输入一个数:");
int num=input.nextInt();
int sum = 0;
//其实和第一个解法区别不大只是用的循环稍微有些区别
while (num >= 1) {
for (int i = 1; i <= num; i++) {
sum += i;
}
num--;
}
System.out.println("计算结果为:" + sum);
}
public void arithmetic3(){
//这是我认为我能想到的最优解法
//本来算法是(1*100)+(2*99)+......+(99*2)+(100*1) _____100个算式
//化简为(1*100*2)+(2*99*2)+......+(49*51*2)+(50*50*2) _____50个算式
Scanner input=new Scanner(System.in);
System.out.print("请输入一个数:");
int num=input.nextInt();
int sum=0;
int i=1;
int frequency=num/2;
while(i<=frequency){
sum=sum+(i*num*2);
i++;
num--;
}
System.out.println("结果:"+sum);
}
运算结果: