站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题计算1+2+3+4+……+n值大于等于500的最小n值

计算1+2+3+4+……+n值大于等于500的最小n值

摘要: 计算1+2+3+4+……+n值大于等于500的最小n值


计算1+2+3+4+……+n值大于等于500的最小n值,用java怎么实现,请大家帮忙!谢谢


哈哈,有用吗

class test
{
static long sum(int n)
{
return (1+n)*n/2;
}

public static void main(String[] args)
{
int i=1;
long sum;

while(true)
{
sum = sum(i);
if(sum>=500) break;
i++;
}

System.out.println("Min N = "+i);
}
}


解不等式(1+n)*n/2>=500


支持2楼的。



这种题还要Java实现……
1+2+...+n >= 5000
n*(n+1) >= 1000
(n+0.5)^2 - 0.5^2 >= 1000
(n+0.5)^2 >= 1000.25
两边取平方根
n+0.5 >= 31.63
n >= 31.13
n >= 32
所以最小的是32

Java代码:

public class Sum500 {

public static int minN(int sum) {
return (int)Math.ceil(Math.sqrt(sum*2+0.25)-0.5);
}

public static void main(String args[]) {
System.out.println(minN(500));
}
}




support upstairs


xtaotao的就可以吧?
感觉及不等式更费尽


牛人,多啊,^_^!


public class TestCountN {
int n=0;
int i=0;
public int testN(){
for(i=0;;i++){
n+=i;
if(n>=500)
break;
}
return i;
}
public static void main(String[] args) {
TestCountN tcn=new TestCountN();
System.out.println(tcn.testN());
}

}


最苯的法子,自己加
int sum=0;
for(int i=1;sum<=500;i++){
sum+=i;
}
return i;


晕,这种题目做出100道也不稀奇,哪里算得上牛啊。。。



呵呵,可能有人觉得我用浮点数运算比较慢,其实我的算法时间复杂度是O(1),而循环计算的复杂度是O(logn)。另外我的算法其实只有一行:
(int)Math.ceil(Math.sqrt(sum*2+0.25)-0.5);


哦,错了。循环计算的复杂度是O(n^0.5)。


很支持 ykzhujiang 和 iambic 的观点。

其实这种题目,如果出在数学课上,可能大家都没什么异议。而出现在计算机课上,就显得很模糊,因为题目本身没有说清楚哪些事情由计算机做、哪些事情应该让人脑先来完成。

在实际的应用环境里,要实现一个算法,首先要经过人脑的充分分析,最后把真正需要电脑来做的工作写成程序,而不能上来就让电脑傻算一通。除非是计算机课上练习循环语句的使用。


iambic

答案是有问题的 如果正好等于 答案是错误的


没有问题吧,我试过的,全部测试如下:


public class Sum500 {


public static int minN(int sum) {
return (int)Math.ceil(Math.sqrt(sum*2+0.25)-0.5);
}

public static void main(String args[]) {

System.out.println(minN(0));
System.out.println(minN(1));
System.out.println(minN(55));
System.out.println(minN(56));
System.out.println(minN(500));
System.out.println(minN(5049));
System.out.println(minN(5050));
System.out.println(minN(5051));


}
}

输出结果:

0
1
10
11
32
100
100
101




楼上正解,学习思想中...


顶你个肺


学习思想中...


Mark
学习中。


很好的思路 顶一下


好东东,好些方法呀!学习!


↑返回目录
前一篇: 如何将一个由1和0组成的String转换成十进制数?
后一篇: 如何在自己名字的后面括号里加上中文名字呢??