| 查看: 2102 | 回复: 14 | |||
| 本帖产生 3 个 程序强帖 ,点击这里进行查看 | |||
[交流]
欧拉工程,第二十一题,计算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以下所有亲和数之和。 |
» 猜你喜欢
回收溶剂求助
已经有7人回复
职称评审没过,求安慰
已经有40人回复
硝基苯如何除去
已经有3人回复
A期刊撤稿
已经有4人回复
垃圾破二本职称评审标准
已经有17人回复
投稿Elsevier的Neoplasia杂志,到最后选publishing options时页面空白,不能完成投稿
已经有22人回复
申请26博士
已经有5人回复
EST投稿状态问题
已经有7人回复
毕业后当辅导员了,天天各种学生超烦
已经有4人回复
求助文献
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
Project Euler 50 欧拉工程 50 题
已经有12人回复
fluent的欧拉-拉格朗日法求助
已经有15人回复
欧拉气固两相流模拟
已经有5人回复
欧拉模型
已经有5人回复
Project Euler 48 欧拉工程 48 题
已经有30人回复
Project Euler 45 欧拉工程 45 题
已经有7人回复
Euler Project Q17. 欧拉工程第十七题
已经有4人回复
Euler Project Q13 欧拉工程第十三题
已经有20人回复
Euler Project Q12 欧拉工程第十二题
已经有23人回复
Euler Project Q8. 欧拉工程第八题
已经有4人回复
Euler Project Q7. 欧拉工程第七题
已经有14人回复
【求助】欧拉模型中颗粒相granular temperature定义
已经有6人回复
【求助】fluent模拟气固流化床采用欧拉模型并行计算出现问题
已经有12人回复
【求助】fluent模拟两段流化床采用欧拉和DPM模型问题
已经有11人回复
【求助】关于欧拉-拉格朗日方程(Euler-Lagrange equation)【已解决】
已经有11人回复
【求助】有谁知道这个是什么个离散方式啊,傅里叶,欧拉....?
已经有3人回复


2楼2011-06-02 22:34:29
wangww2011
木虫 (著名写手)
- 程序强帖: 13
- 应助: 11 (小学生)
- 金币: 4023.1
- 散金: 2709
- 红花: 18
- 沙发: 1
- 帖子: 1915
- 在线: 1537.1小时
- 虫号: 772953
- 注册: 2009-05-17
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
3楼2011-06-03 13:22:19
libralibra
至尊木虫 (著名写手)
骠骑将军
- 程序强帖: 40
- 应助: 817 (博后)
- 金币: 12914.1
- 红花: 64
- 帖子: 2238
- 在线: 287.3小时
- 虫号: 696514
- 注册: 2009-02-05
- 专业: 计算机软件

4楼2011-06-03 16:36:21
holmescn
金虫 (正式写手)
- 程序强帖: 37
- 应助: 1 (幼儿园)
- 金币: 1918.8
- 散金: 275
- 红花: 1
- 帖子: 699
- 在线: 102.6小时
- 虫号: 913482
- 注册: 2009-11-26
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
5楼2011-06-04 09:09:26
holmescn
金虫 (正式写手)
- 程序强帖: 37
- 应助: 1 (幼儿园)
- 金币: 1918.8
- 散金: 275
- 红花: 1
- 帖子: 699
- 在线: 102.6小时
- 虫号: 913482
- 注册: 2009-11-26
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
6楼2011-06-04 09:22:36
★ ★ ★ ★
dubo(金币+1): 多谢交流 2011-06-04 14:44:46
余泽成(金币+3): 鼓励交流! 2011-06-04 19:32:10
dubo(金币+1): 多谢交流 2011-06-04 14:44:46
余泽成(金币+3): 鼓励交流! 2011-06-04 19:32:10
|
这个问题的原理与求素数的那个程序是一样的,那里的buf是bool的,这里换成size_t罢了,特殊的处理是把每个除数都迭加了进去。还记得欧拉第一题吗?倍数形成的数列是等差数列。 size_t在这的语义是正确的啦,C 和C还是有那么点不同的,具体到这里,size_t是一个索引,索引的类型应该是unsigned的,带符号的版本对应的类型是ssize_t,这在AUPE里面作为一个标准化的内容做了介绍。而且,C 的容器类都用size_t作为size的返回类型,int的索引隐式转换到无符号的size_t时存在陷阱,这个问题可能导致溢出,也可能导致无限循环,作为一个习惯和不要偷懒的建议:size_t是个好类型! |

7楼2011-06-04 13:07:17
★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
ben_ladeng(金币+1): 奖励下下 2011-06-04 17:52:28
余泽成(金币+2, 程序强帖+1): 鼓励交流! 2011-06-04 19:32:24
小木虫(金币+0.5):给个红包,谢谢回帖
ben_ladeng(金币+1): 奖励下下 2011-06-04 17:52:28
余泽成(金币+2, 程序强帖+1): 鼓励交流! 2011-06-04 19:32:24
|
// play_time_calu.cpp : 定义控制台应用程序的入口点。 // //#include "stdafx.h" #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(float(n));//sqrtn=sqrt(n) 不正确 for(i=2;i } if(sqrtn*sqrtn==n)sum-=sqrtn; return sum; } int euler21(int n){ int i,sum=0,tmp; for(i=3;i if(tmp!=i&&tmp } } return sum; } int main(void){ //int i; 没必要 TIMERSTART; printf("%d\n",euler21(10000)); TIMERSTOP; return 0; } |
8楼2011-06-04 14:55:25
★ ★
余泽成(金币+2): 鼓励交流! 2011-06-04 19:32:39
余泽成(金币+2): 鼓励交流! 2011-06-04 19:32:39
|
Originally posted by wangww2011 at 2011-06-03 13:22:19: 结果 31626 elapsed time=0.020000 seconds. c代码 [code] #include <stdio.h> #include <math.h> #include <time.h> #define TIMERSTART clock_t start_time,stop ... 不过,我对你用的这个听感兴趣,呵呵 #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); |
9楼2011-06-04 14:56:22
holmescn
金虫 (正式写手)
- 程序强帖: 37
- 应助: 1 (幼儿园)
- 金币: 1918.8
- 散金: 275
- 红花: 1
- 帖子: 699
- 在线: 102.6小时
- 虫号: 913482
- 注册: 2009-11-26
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+2): 鼓励交流! 2011-06-04 19:32:48
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+2): 鼓励交流! 2011-06-04 19:32:48
|
Originally posted by huycwork at 2011-06-04 13:07:17: 这个问题的原理与求素数的那个程序是一样的,那里的buf是bool的,这里换成size_t罢了,特殊的处理是把每个除数都迭加了进去。还记得欧拉第一题吗?倍数形成的数列是等差数列。 size_t在这的语义是正确的啦,C ... 确实,size_t做为size和index都是语义明确的类型,但虽然你要返回的类型是int,如果做为标记,应该使用bool,而你都用size_t,就让人感觉,你的每个变量都是一个index。函数返回的也是一个index。所以,这不是一个好习惯。 |
10楼2011-06-04 18:52:58













回复此楼