24小时热门版块排行榜    

查看: 2750  |  回复: 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:16
余泽成(金币+2): 鼓励交流! 2011-06-04 19:31:55
引用回帖:
Originally posted by huycwork at 2011-06-02 22:34:29:
C++代码:
[code]
#include <iostream>
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 = ...

你似乎使用了什么数学方法,而不是直接计算的。能不能讲讲啊。

还有,你对size_t显然存在滥用,虽然size_t是int的一个typedef,但这个主要是为了明确语义才引用的,而你把一些int语义的东西写成size_t,会让人产生误会。
5楼2011-06-04 09:09:26
已阅   回复此楼   关注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的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +4 QUjhNVAcOSff 2026-09-13 4/200 2026-09-14 21:37 by vZfe6xYu34yj
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 QUjhNVAcOSff 2026-09-13 5/250 2026-09-14 21:25 by vZfe6xYu34yj
[博后之家] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 QUjhNVAcOSff 2026-09-13 5/250 2026-09-14 21:24 by vZfe6xYu34yj
[公派出国] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 QUjhNVAcOSff 2026-09-13 7/350 2026-09-14 21:21 by vZfe6xYu34yj
[考博] 上海工程技术大学激光智能制造课题组招收博士研究生 +4 两三岁ss 2026-09-14 4/200 2026-09-14 20:29 by 班主任的同桌
[考研] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 s3fFTmArrBt6 2026-09-14 3/150 2026-09-14 18:01 by Aj1rhIDL5ixY
[考博] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 s3fFTmArrBt6 2026-09-14 4/200 2026-09-14 17:49 by Aj1rhIDL5ixY
[考博] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 s3fFTmArrBt6 2026-09-14 4/200 2026-09-14 17:25 by Aj1rhIDL5ixY
[公派出国] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 LwdutQ8HoqWP 2026-09-13 5/250 2026-09-14 16:25 by Aj1rhIDL5ixY
[教师之家] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 LwdutQ8HoqWP 2026-09-13 4/200 2026-09-14 16:13 by Aj1rhIDL5ixY
[考研] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 LwdutQ8HoqWP 2026-09-13 4/200 2026-09-14 16:12 by Aj1rhIDL5ixY
[找工作] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 3n8v2C8RimXI 2026-09-13 4/200 2026-09-14 16:00 by Aj1rhIDL5ixY
[考研] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 3n8v2C8RimXI 2026-09-13 4/200 2026-09-14 15:45 by Aj1rhIDL5ixY
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 QUjhNVAcOSff 2026-09-13 3/150 2026-09-14 15:09 by Aj1rhIDL5ixY
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 QUjhNVAcOSff 2026-09-13 3/150 2026-09-14 14:57 by Aj1rhIDL5ixY
[基金申请] 求教各位大神:2026教育部人文社科青年基金项目何时公示呀? +5 云宴山人 2026-09-10 7/350 2026-09-14 12:11 by ecnu2013
[考博] 西北工业大学材料学院电化学传感与催化课题组招收2027年推免研究生、博士生、博士后 +3 马方园 2026-09-10 4/200 2026-09-14 09:29 by Chem张zz
[考博] 27秋季材料博士申请求助 10+3 Cahal1 2026-09-11 4/200 2026-09-14 08:50 by 北京莱茵编辑
[教师之家] 浙江师范大学是怎么坑我的 +10 recruit123 2026-09-09 15/750 2026-09-13 10:45 by seaskyy
[基金申请] 面上有专家说实验设备不是我们单位的 +6 zj_muchong 2026-09-08 8/400 2026-09-11 06:56 by suifengdao
信息提示
请填处理意见