问个求和,求完数的题

zixiakoma 2008-06-30 09:46:30
1-1/2+1/3-1/4+......+Math.pow(-1,n-1)*1/n,其中n是用户输入的正整数。


编写方法,输出n以内所有完数。一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3。
...全文
172 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sagezk 2008-06-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lord_is_layuping 的回复:]


火龙果,这是什么道理啊?

你在地址栏的 .html 后面加上一些其他的东西,比如 ?seed=454545645 这种再敲回车就有了。
[/Quote]

IE 缓存在作怪。垃圾的 IE。
lord_is_layuping 2008-06-30
  • 打赏
  • 举报
回复


火龙果,这是什么道理啊?

你在地址栏的 .html 后面加上一些其他的东西,比如 ?seed=454545645 这种再敲回车就有了。
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhaolinger2 的回复:]
为什么我看不到我的回复以及我回复的帖子之后的帖子?
[/Quote]

你在地址栏的 .html 后面加上一些其他的东西,比如 ?seed=454545645 这种再敲回车就有了。
zhaolinger2 2008-06-30
  • 打赏
  • 举报
回复
对计算机处理来讲,可能下面这个更加好一些(借用了ls的代码)


for(int i=1;i <n;i++){
int sum = 1;
for(int j=1;j <i/2;j++){
if(i%j == 0){
sum = sum + j;
}
}
if(sum == i) {
System.out.println(i);
}
}
guoxujie 2008-06-30
  • 打赏
  • 举报
回复
int sum = 0;
for(int i=1;i <n;i++){
for(int j=1;j <i;j++){
if(i%j == 0){
sum = sum + j;
}
}
if(sum == i) {
System.out.println(i);
}
}
zhaolinger2 2008-06-30
  • 打赏
  • 举报
回复
为什么我看不到我的回复以及我回复的帖子之后的帖子?
zhaolinger2 2008-06-30
  • 打赏
  • 举报
回复
第一个求和,可以告诉你思路。
首先确定用户输入的n是奇数还是偶数。
我们可以看到,这个数列中每2项的和是将这两项的分母相乘作为分母,分子为1。这样,数列就变成了:
1/(1*2)+1/(3*4)+1/(5*6)+...
这个数列的求和应该很容易了吧?两个变量1和2,求积,求倒数,累加,然后依次分别加2,再这样累加。
如果n是偶数,直接累加到n为止。
如果n是奇数,则累加到n-1,然后加上一个1/n就可以了。

rosewj 2008-06-30
  • 打赏
  • 举报
回复
给你完全数的 考试前刚做过

for(int i=1;i<n;i++) {
int sum = 0;
for(int j=1;j<i;j++) {
if(i%j == 0)
sum = sum + j;
}
if(sum == i) {
System.out.println(i);
}
}
zixiakoma 2008-06-30
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yirentianran 的回复:]
求和

Java code
class Test
{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入正整数!");
int param = 0;
double result = 0;
try{
param = scanner.nextInt();
if(param <= 0)
throw new Exception();
}catch (Exception e) {
S…
[/Quote]

谢谢 一人天然。
胡矣 2008-06-30
  • 打赏
  • 举报
回复
求和

class Test
{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入正整数!");
int param = 0;
double result = 0;
try{
param = scanner.nextInt();
if(param <= 0)
throw new Exception();
}catch (Exception e) {
System.out.println("输入非法,程序退出!");
}
for(int n = 1;n <= param;++n)
{
result += Math.pow(-1,n-1)*1.0/n;
}
System.out.println(result);
}
}
fuyou001 2008-06-30
  • 打赏
  • 举报
回复
哈哈!缓存!
sagezk 2008-06-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sagezk 的回复:]
引用 9 楼 lord_is_layuping 的回复:


火龙果,这是什么道理啊?

你在地址栏的 .html 后面加上一些其他的东西,比如 ?seed=454545645 这种再敲回车就有了。


IE 缓存在作怪。垃圾的 IE。
[/Quote]

后面加上 ?seed=454545645 浏览器看到的是一个完全不同的 URL,它就不会用缓存内容忽悠你了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧