我需要帮助做一个程序,甚至将整数加到1
我需要计算机才能计算出1 + 3 + 7 + 13 + 21 .... + n
n是用户想要的任何内容
顺序是每个偶数加起来,所以例如,你从1开始加2,得到3,然后加3加4,得到7,然后加7加6,得到13等等直到你到达。
我有一个完整的猜测
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Odd4 extends JFrame implements ActionListener {
private JButton button;
private JPanel panel;
public static void main(String [] args) {
Odd4 frame = new Odd4();
frame.setSize(100, 100);
frame.createLine();
frame.show();
}
private void createLine() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container window=getContentPane();
window.setLayout (new FlowLayout());
button = new JButton("OK");
window.add(button);
button.addActionListener(this);
}
public void actionPerformed(ActionEvent event) {
int n;
int sum = 0;
int i;
int s = 1;
String nString;
nString = JOptionPane.showInputDialog("n:");
n = Integer.parseInt(nString);
for (i = 1; i <= n; i ++){
if (i%2 == 0)
do {
j=j+i;
sum = sum + j;
}
while (j <= n);
}
JOptionPane.showMessageDialog(null, "Total is: " + sum);
}
答案 0 :(得分:0)
偶数可以写成2i,奇数可以写成2i + 1。
所以我不确定你的问题,但为了做总和你做一个循环增加我和总和,直到你的数字达到n:
修改:正确(总和开始为1并添加偶数):
i = 0;
sum = 1;
while (2*i <= n){ // or 2*i +1 for odd
sum += 2*i;
i++;
}
编辑2:正确答案 公共类HelloWorld {
public static void main(String []args){
int i=0;
int n=7;
int sum=1;
int total = 0;
while (sum < n){ // or 2*i +1 for odd
sum += 2*i;
total += sum;
i++;
}
System.out.println(total);
}
}
答案 1 :(得分:0)
你实际上并不需要循环来解决这个问题。
每个术语是1加上偶数的总和,例如1,1 + 2,1 + 2 + 4,1 + 2 + 4 + 6.
偶数之和为x*(x+1)
,加1为n^2 + n + 1
。
然后你要总结这些术语。
平方和为n*(n+1)*(2*n+1)/6
数字之和为n*(n+1)/2
1,(n + 1)次之和为n+1
解决方案是
n*(n+1)*(2*n+1)/6 + n*(n+1)/2 + n + 1
或
(2*n^3 + 7*n^2 + 10*n + 6)/6
e.g
1 + 3 + 7 + 13 + 21 = 45
21是第4个任期
(2*4^3 + 7*4^2 + 10*4 + 6)/6 = 45
使用公式并查看差异和差异的差异
term sum value even
0 1 1
1 4 3 2
2 11 7 4 2
3 24 13 6 2
4 45 21 8 2
5 76 31 10 2
6 119 43 12 2
7 176 57 14 2
8 249 73 16 2
9 340 91 18 2
10 451 111 20 2
答案 2 :(得分:0)
很确定你想要这样的东西:
public static void main(final String[] args) {
long total = 1;
for( int i = 0; i < 10; i++ ) {
total += (2*i);
System.out.println(total);
}
}
在我的测试中打印出来:
1
3
7
13
21
31
43
57
73
91
编辑:添加条款的解决方案
public static void main(final String[] args) {
long total = 0;
long term = 1;
for( int i = 0; i < 5; i++ ) {
term += (2*i);
total += term;
System.out.println("Term " + i + " is " + term);
System.out.println("Current Total is " + total);
}
}
第0项是1
当前总数为1
第1项是3
当前总数为4
第2学期是7
当前总数为11
第3学期是13
当前总数为24
第4学期是21
当前总数为45
编辑:在Ideone上添加了完整的解决方案
根据评论中OP的要求,我在Ideone中整合了一个完整的解决方案。 It's here!
答案 3 :(得分:0)
这会有帮助吗?
int a[];
int i=0,f=1,a=2.sum=0;
while(f<=n)
{
a[i]=f;
f=f+a;
a=a+2;
i++;
}
for(int j=0;j<a.length;j++)
{
sum+=a[j];
}
答案 4 :(得分:0)
条款可以写成:
因此,您需要在这些字词小于用户输入n
时对它们求和:
int i=0, n = userInput, term;
int sum=0;
while((term = (i*(i+1)+1)) < n) {
sum+=term;
i++;
}
您可以在this ideone
中看到它正常工作答案 5 :(得分:0)
这就是我想要的: -
sumofEven 会在偶数位置为您提供数字总和。
public class Sample {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
long n =21 ;
int i= 0;
long sumofEven =0;
long sumofAll =1;
while(sumofAll <= n){
sumofAll = (long) (sumofAll + 2*i);
System.out.println("->"+sumofAll);
if((i+1) % 2 == 0){
sumofEven = sumofEven + sumofAll;
}
i++;
}
System.out.println("sumofAll Numbers : "+sumofAll +"\nSum of no at event place : "+sumofEven);
}
}