java程序将偶数相加为1
我需要帮助做一个程序,将偶数整数相加到1 我需要电脑计算出1+3+7+13+21n n是用户希望它是什么 序列将每个偶数相加,例如,从1开始,加2,得到3,然后到3,再加4,得到7,然后到7,再加6,得到13,依此类推,直到n 我完全猜到了java程序将偶数相加为1,java,Java,我需要帮助做一个程序,将偶数整数相加到1 我需要电脑计算出1+3+7+13+21n n是用户希望它是什么 序列将每个偶数相加,例如,从1开始,加2,得到3,然后到3,再加4,得到7,然后到7,再加6,得到13,依此类推,直到n 我完全猜到了 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Odd4 extends JFrame implements ActionListener {
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);
}
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类Odd4扩展JFrame实现ActionListener{
私人按钮;
私人JPanel小组;
公共静态void main(字符串[]args){
Odd4帧=新Odd4();
框架。设置尺寸(100100);
frame.createLine();
frame.show();
}
私有void createLine(){
setDefaultCloseOperation(关闭时退出);
容器窗口=getContentPane();
window.setLayout(新的FlowLayout());
按钮=新按钮(“确定”);
窗口。添加(按钮);
addActionListener(这个);
}
已执行的公共无效操作(操作事件){
int n;
整数和=0;
int i;
int s=1;
串串;
nString=JOptionPane.showInputDialog(“n:”);
n=整数.parseInt(nString);
对于(i=1;i),偶数可以写为2i,奇数可以写为2i+1
所以我不确定你的问题,但是为了求和,你做一个循环,增加i和sum,直到你的数字达到n:
编辑:正确(总和从1开始加偶数):
i=0;
总和=1;
而(2*i你实际上不需要一个循环来解决这个问题
每项为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
或
e、 g
21是第四学期吗
(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
你肯定想要这样的东西:
public static void main(final String[] args) {
long total = 1;
for( int i = 0; i < 10; i++ ) {
total += (2*i);
System.out.println(total);
}
}
publicstaticvoidmain(最终字符串[]args){
长期总计=1;
对于(int i=0;i<10;i++){
总数+=(2*i);
系统输出打印项次(总计);
}
}
在我的测试中,它打印出:
一,
三,
七,
十三,
二十一,
三十一
43
57
七十三
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);
}
}
publicstaticvoidmain(最终字符串[]args){
长总计=0;
长期=1;
对于(int i=0;i<5;i++){
术语+=(2*i);
总数+=期限;
System.out.println(“术语“+i+”是“+Term”);
系统输出打印项次(“当前总计为”+总计);
}
}
术语0是1
目前的总数是1
第一学期是第三学期
目前的总数是4
第二学期是第七学期
目前的总数是11
第三学期是13
目前的总数是24
第四学期是21
目前的总数是45
编辑:在Ideone上添加完整的解决方案
根据评论中OP的要求,我用Ideone拼凑了一个完整的解决方案。这会有帮助吗
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];
}
inta[];
int i=0,f=1,a=2。总和=0;
而(f术语可以这样写:
因此,当这些术语小于用户输入时,您需要求和:
int i=0, n = userInput, term;
int sum=0;
while((term = (i*(i+1)+1)) < n) {
sum+=term;
i++;
}
inti=0,n=userInput,term;
整数和=0;
而((项=(i*(i+1)+1))
你可以看到它在中工作,我想这就是你想要的:-
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);
}
公共类示例{
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
长n=21;
int i=0;
长sumofEven=0;
长sumofAll=1;
while(sumofAll,你的问题是什么?@user3533531我们有很多东西,但问题是什么?你是指奇数还是偶数?1,3,5 e.t.c是奇数。我的意思是你不断地增加偶数(以升序为1),你想计算(1+2)+(1+2+4)+(1+2+4+6)+(1+2+4+6)...请验证这个答案,如果它对你有帮助的话;)我不确定这是否正确,当我输入7时,显示的答案是16,但正确的答案是14公式是错误的(它是1+3+5+7+…而不是1+3+7+13+…)将2*i+1替换为2*1,然后开始求和为1;这仍然是错误的,因为当我输入7时,它得到了13,正确答案是11,这或多或少是我想要的,但我希望计算机将所有这些数字相加。你可以将这个数字相加,而不是打印它们;)这太神奇了!@user3533531我的第一个解决方案计算了术语,我添加了一个编辑,可以在计算过程中将术语相加。我想这就是您要查找的。@user3533531我不确定您的终止条件是什么。在中,我假设n是您要计算的术语数。因此,如果n=2,则会得到11。术语0是1,术语1是3,术语2是7,所以1+3+7=11不,n是最终的数字,所以如果n是7,你会做1+3+7,n不是你要计算的术语,t不是你要计算的术语,它是你达到的最终数字,例如,如果用户做了n7,计算机会做1+3+7@user3533531n
是你定义的任何东西可以像Dan Temple那样叫它i
。如果用户键入6,你会怎么做?n不是你计算的结果,而是最终的数字,例如,如果n是7,你会做1+3+7这是我做的,取一个l
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);
}
}
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];
}
int i=0, n = userInput, term;
int sum=0;
while((term = (i*(i+1)+1)) < n) {
sum+=term;
i++;
}
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);
}