| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2929 人关注过本帖
标题:[求助][求助][求助][求助]亲和数~
只看楼主 加入收藏
C之Itachi
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2006-7-16
收藏
得分:0 
能运行了..不过
结果好象不准确``200-1200
有2对的 
(220,284)和(1184 1210)

2006-09-07 22:07
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
收藏
得分:0 

靠,1210在[200,1200]的范围内吗?
不是说x,y都要在区间内的吗?


2006-09-07 22:18
cwande
Rank: 2
等 级:新手上路
威 望:3
帖 子:333
专家分:0
注 册:2006-8-18
收藏
得分:0 

因为他是反过来测的(1184,1210)中1210>1200,
所以就找不到了,


汗,都懒得写代码了.......... cheat了一个威望,哈.....
2006-09-07 22:18
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
收藏
得分:0 
如果y没有区间限制:
把 if(sum1>=x||sum1<A||sum1>B)
改成 if(sum1<=x)即可!

[此贴子已经被作者于2006-9-7 22:21:05编辑过]


2006-09-07 22:19
cwande
Rank: 2
等 级:新手上路
威 望:3
帖 子:333
专家分:0
注 册:2006-8-18
收藏
得分:0 

楼主,给你个比较快的代码,你测一下[1,100000]的区间

[CODE]#include<stdio.h>
#include<string.h>
#define M 500001
int f[M];
void init()
{
int i,j;
memset(f,0,sizeof(f));
for(i=2;i<M;i++)
{
for(j=i;j<M;j+=i)
if(j!=i)f[j]+=i;
f[i]++;
}
return;
}
int main()
{
int i;
int A,B,t;
init();
printf("Input A,B:");
scanf("%d,%d",&A,&B);
if(A>B)
t=A,A=B,B=t;
for(i=A;i<=B;i++)
if(f[i]>i&&f[i]<=B&&f[f[i]]==i)
printf("%d %d\n",i,f[i]);
return 0;
}[/CODE]


汗,都懒得写代码了.......... cheat了一个威望,哈.....
2006-09-07 22:21
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用ww84020209在2006-9-7 21:42:40的发言:

5楼的效率太低了,[1,10000]间的亲和数等了半天也没算完!
你试试我的,很快!


你的程序的确很快,但
请输入两个不相等的数x,y:1 10000
第1个亲和数对是:<220,284>
第2个亲和数对是:<1184,1210>
第3个亲和数对是:<2620,2924>
第4个亲和数对是:<5020,5564>
第5个亲和数对是:<6232,6368>
Press any key to continue...


倚天照海花无数,流水高山心自知。
2006-09-07 22:24
C之Itachi
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2006-7-16
收藏
得分:0 
15的`win-tc编译出现:Error noname.c 4: Array size too large

2006-09-07 22:25
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
定义的数组大小已经超过缓冲区空间

倚天照海花无数,流水高山心自知。
2006-09-07 22:27
cwande
Rank: 2
等 级:新手上路
威 望:3
帖 子:333
专家分:0
注 册:2006-8-18
收藏
得分:0 
汗,不会吧........
你把M设成100001,试试

汗,都懒得写代码了.......... cheat了一个威望,哈.....
2006-09-07 22:29
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
收藏
得分:0 
#define M 500001
int f[M];
靠,太浪费空间了!!!!!!!

2006-09-07 22:29
快速回复:[求助][求助][求助][求助]亲和数~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022157 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved