会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
留下我的成长脚印.........
博客园
首页
新随笔
联系
管理
订阅
1316-Self Numbers
用一个数组保存该位置是否是自私数, generat递归函数推导从1->10000的所有数,但是当碰到self[i]该位置的值已经为1时,就不用继续递归
下去了,因为之前的数已经推导过了
Code
1
#include
<
stdio.h
>
2
#include
<
math.h
>
3
#include
<
string
.h
>
4
#define
SIZE 10003
5
6
void
generat(
int
num,
int
*
self)
7
{
8
int
tmp
=
num;
9
int
i
=
1
;
10
while
(num
>
0
)
11
{
12
tmp
+=
num
%
10
;
13
num
=
num
/
10
;
14
}
15
if
(tmp
<
10000
&&
self[tmp]
!=
1
)
16
{
17
self[tmp]
=
1
;
18
generat(tmp,self);
19
}
20
else
21
return
;
22
}
23
24
int
main()
25
{
26
int
self[SIZE];
27
memset(self,
0
,
sizeof
(self));
28
for
(
int
i
=
1
;i
<
SIZE;i
++
)
29
generat(i,self);
30
for
(
int
i
=
1
;i
<
10000
;i
++
)
31
{
32
if
(self[i]
==
0
)
33
printf(
"
%d\n
"
,i);
34
}
35
return
0
;
36
}
posted @
2009-07-13 15:49
SoYoung
阅读(
235
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告