题目:编程求:∑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); }运算结果: