24小时热门版块排行榜    

查看: 2709  |  回复: 14
本帖产生 3 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

huycwork

金虫 (著名写手)

[交流] 欧拉工程,第二十一题,计算10000以下亲和数的和。 已有5人参与

咳咳,放假与睡觉之前再发一题,E文不好,诸位见谅哈~

定义d(n)是n的所有约数的和。

如果d(a) = b,d(b) = a且满足a != b,则说a与b是一组亲和数。

例如,220的所有约数是1, 2, 4, 5, 10, 11, 20, 22, 44, 55与110,则d(220) = 284;而284的所有约数是1, 2, 4, 71与142,累加得:d(284) = 220。

试计算10000以下所有亲和数之和。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

漩涡的中心有一块空地,空空的。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
dubo(金币+1): 多谢交流 2011-06-04 14:44:27
引用回帖:
Originally posted by libralibra at 2011-06-03 16:36:21:
看笨拙的matlab吧

[code] function result = euler21()
tic;
result = [];
for i=1:10000
    if d(i)~=i && d(d(i))==i
        result = [result,i];
    end
end
result = sum(unique(resu ...

这个d(d(i))==i好像会影响效率吧。
6楼2011-06-04 09:22:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 15 个回答

huycwork

金虫 (著名写手)

★ ★ ★
dubo(金币+1): 多谢交流 2011-06-04 14:42:08
余泽成(金币+2, 程序强帖+1): 鼓励交流! 2011-06-04 19:31:23
C++代码:
CODE:
#include
enum {BUFSZ = 10000};

size_t eular21(){
        size_t buf[BUFSZ];
        memset(buf, 0, sizeof buf);
        for(size_t i = 1; i < BUFSZ; ++i){
                for(size_t j = i+i; j < BUFSZ; j+=i){
                        buf[j] += i;
                }
        }
        size_t d, s = 0;
        for(size_t i = 2; i < BUFSZ; ++i){
                d = buf[i];
                if(i == buf[d]){
                        if(i != d)
                                s += i;
                }
        }
        return s;
}

int main(){
        std::cout< }

漩涡的中心有一块空地,空空的。
2楼2011-06-02 22:34:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangww2011

木虫 (著名写手)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
dubo(金币+1): 多谢交流 2011-06-04 14:43:26
余泽成(金币+2): 鼓励交流! 2011-06-04 19:31:33
结果
CODE:
31626
elapsed time=0.020000 seconds.

c代码
CODE:
#include
#include
#include

#define TIMERSTART clock_t start_time,stop_time;double elapsed_time;start_time = clock();
#define TIMERSTOP stop_time = clock();elapsed_time=(double)(stop_time-start_time)/CLOCKS_PER_SEC;printf("elapsed time=%f seconds.\n",elapsed_time);


int sumdivisors(int n){
  int i,sum=1,sqrtn=sqrt(n);
  for(i=2;i     if(n%i==0)sum+=i+n/i;
  }
  if(sqrtn*sqrtn==n)sum-=sqrtn;
  return sum;
}

int euler21(int n){
  int i,sum=0,tmp;
  for(i=3;i     tmp=sumdivisors(i);
    if(tmp!=i&&tmp       sum+=i;
    }
  }
  
  return sum;
}


int main(void){
int i;

TIMERSTART;

printf("%d\n",euler21(10000));
  
TIMERSTOP;

  return 0;
}

3楼2011-06-03 13:22:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
dubo(金币+1): 多谢交流 2011-06-04 14:43:53
余泽成(金币+2, 程序强帖+1): 鼓励交流! 2011-06-04 19:31:45
看笨拙的matlab吧
CODE:
function result = euler21()
tic;
result = [];
for i=1:10000
    if d(i)~=i && d(d(i))==i
        result = [result,i];
    end
end
result = sum(unique(result));
toc;
end

%% Let d(n) denote the sum of proper divisors of n (numbers less than n which divide evenly into n).
% For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore d(220) = 284.
% sub function to compute d(n), called by 21 and 23
function s = d(n)
s = 0;
for i=1:n-1
    if mod(n,i)==0
        s = s+i;
    end
end
end

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2011-06-03 16:36:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 为什么资助数各大高校都创新高,自己申请怎么就这么难 +8 Kittylucky 2026-08-27 8/400 2026-08-27 18:33 by raiy123
[基金申请] 基金不中,共勉 +10 eulota 2026-08-26 10/500 2026-08-27 17:23 by lqllinqiaoli
[基金申请] 国自然面上复盘~欢迎讨论 (金币+5) +10 晴天加油 2026-08-26 11/550 2026-08-27 16:35 by msuhlx
[文学芳草园] 梦想 +3 myrtle 2026-08-26 3/150 2026-08-27 10:01 by angelyueyi
[基金申请] 面上合作单位盖章 +3 ssyjh 2026-08-27 3/150 2026-08-27 09:59 by 阿拉贡aragon
[基金申请] 为什么 国际(地区)合作与交流项目 没有放榜? 10+3 majunge000 2026-08-26 11/550 2026-08-27 08:42 by 北京莱茵编辑
[基金申请] 让我中一个面上吧! +13 大萍1987 2026-08-20 17/850 2026-08-27 08:20 by 大萍1987
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 LIbGuocjEEYw 2026-08-26 4/200 2026-08-27 02:01 by Ie9AyIAvGbvs
[基金申请] 怎么查啊 +5 huang1991js 2026-08-26 5/250 2026-08-26 16:09 by Equinoxhua
[基金申请] 范进中举一文的中心思想 +9 炎黄贵胄 2026-08-22 10/500 2026-08-26 15:40 by semaglutide
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +4 yuleib84 2026-08-26 5/250 2026-08-26 13:40 by yuleib84
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 项目信息和经费信息在系统里都可以看到了 +6 wittyboy 2026-08-26 14/700 2026-08-26 10:55 by wittyboy
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 没有任何消息-是不是就凉了 +9 图啦图啦 2026-08-24 10/500 2026-08-25 11:59 by 南海小哥
[基金申请] 人气不行了 +11 fansofjerry 2026-08-21 11/550 2026-08-25 11:04 by 孤独的英雄6
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
信息提示
请填处理意见