只添加奇数

时间:2012-11-15 10:47:02

标签: java

所以我试图解决用户的问题应该输入任何正数。然后我正在尝试编写一个程序,只添加奇数到用户输入的数字并显示总数。因此,例如,如果用户输入4我的程序应该添加四个奇数。 1 + 3 + 5 + 7 = 16.
我可用的唯一工具是声明,if,if / else if,while loop和println。

我只能弄清楚如何打印奇数。我知道我想创建一个名为total的变量来存储加起来所有奇数的值,但我不知道它是如何适合程序的。

import acm.program.*;

public class AddingOddNumbers extends ConsoleProgram {
    public void run() {
        int n = readInt("enter a positive nunber: ");
        int total = 0;
        for (int i = 0; i < n; i++) {
            if (n == 1) {
                println(1);
            } else {
                println((i * 2) + 1);
            }
        }
    }
}

6 个答案:

答案 0 :(得分:2)

import acm.program.*;

public class AddingOddNumbers extends ConsoleProgram {
    public void run() {
        int n = readInt("enter a positive nunber: ");
        int total = 0;
        for (int i = 0; i < n; i++) {
            if (n == 1) {
                println(1);
            } else {
                println((i * 2) + 1);
                total += (i * 2) + 1;
            }
        }
        println("total : " + total);
    }
}

答案 1 :(得分:1)

sum = 0;

for (i = 1; i < n*2; i=i+2)
    sum = sum + i;

答案 2 :(得分:1)

这将给你奇数总和。

  if (n>0) 
   {
    total=0;
      for (int i = 1; i < n; i ++){
        if (i%2 == 1)
            total+=i;
      }
   }

如果要包含n,请将条件更改为i<=n

答案 3 :(得分:1)

也许您知道如何计算给定数字n之前的所有数字的总和?公式非常简单:(n * (n+1))/2。现在得到只有奇数的总和有点棘手但是 - 不用担心你只能使用前面的公式。首先注意到所有偶数的总和,直到给定的数字n为:

  • (((n/2)* (n/2+1))/2) * 2如果N是偶数(即所有数字的总和,最多为n / 2倍,因为你有2+4+6+8+...N = 2*(1+2+3+...n/2)
  • ((((n-1)/2)* ((n-1)/2+1))/2) * 2如果N是奇数

事实上,如果你有整数除法,公式总是:(((n/2)* (n/2+1))/2) * 2 = (n/2)* (n/2+1)

因此,要计算所有奇数到n的总和,您只需从所有数字的总和中减去偶数的总和:

(n * (n+1))/2 - (n/2)*(n/2+1)

事实上,如果你仔细观察,你会发现总和1+3+...(2*n-1)总是等于n^2

这个答案可以帮助您解决所有语言的问题,我将代码留给您。它实际上是一行。

答案 4 :(得分:0)

我也会使用一个循环来表示奇数。

for (int i = 0, j = 1; i < n; i++, j += 2) {
    println(j);
    total += j;
}
println(total);

答案 5 :(得分:0)

int oddSum = 0;
for (int i = 0; i < n; i++){
  oddSum = oddSum + (i*2) + 1;
}