找回密码
 欢迎注册
楼主: 数学星空

[分享] 单位分数难题续

[复制链接]
发表于 2010-1-19 09:31:33 | 显示全部楼层
N=7的结果为227907个,结果文件共7.2M
看来N=8是不能保留结果文件的了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-1-19 09:36:38 | 显示全部楼层
100112164510b44304ffab42f5.jpg
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-19 09:41:48 | 显示全部楼层
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-1-19 09:52:49 | 显示全部楼层
呵呵,看来只有计算n=9才能打破记录
可能只有mathe....
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-19 09:59:39 | 显示全部楼层
mathe有计算这个的先例
不穷举也可以计算的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-19 10:02:28 | 显示全部楼层
另外,肚子去美国了?
怎么IP显示在美国?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-19 10:08:30 | 显示全部楼层
IP不能说明任何问题,现在呢?
发现我还有遗漏,而前面计数过多,是我不知道gp写文件,不会覆盖原先的文件.所以如果原先文件中还有数据,会将多次数据累加
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-19 10:25:38 | 显示全部楼层
这下N=5和N=6的数目同12#一致了

  1. N()=
  2. {
  3.   7
  4. }

  5. K()=
  6. {
  7.     N()-2
  8. }

  9. BEGIN()=
  10. {
  11.     0
  12. }

  13. END()=
  14. {
  15.     -1
  16. }

  17. OUTFILENAME()=
  18. {
  19.     "/home/zdu/N7d.txt"
  20. }

  21. output()=
  22. {
  23.     local(V,MM,RR,uu,f,v,v2,a,b,d);
  24.     MM=M[K()];
  25.     RR=R[K()];
  26.     V=MM;
  27.     c=c+1;
  28.     if(c>=BEGIN()&&(END()<0||c<=END()),
  29.             f=divisors(V);
  30.             for(u=1,length(f),
  31.               for(u2=u,length(f),
  32.                 v=f[u];v2=f[u2];
  33.                 if((v+v2)%RR!=0, next());
  34.                 if(gcd(v,v2)>1,next());
  35.                 d=(v+v2)/RR*(V/(v*v2));
  36.                 a=d*v;b=d*v2;
  37.                 if(a>=n[K()],
  38.                        n[K()+1]=a;
  39.                        n[K()+2]=b;
  40.                        write(OUTFILENAME(),n);
  41.                 )
  42.               )
  43.             )
  44.     );
  45.     if(c%100==0, print("process " c " lines"))
  46. }

  47. search(level)=
  48. {
  49.     local(ll,uu,dd);
  50.     if(level>=K(),
  51.        output(),
  52.        ll=floor(M[level]/R[level])+1;
  53.        uu=floor((N()-level)*M[level]/R[level]);
  54.        if(ll<=n[level],ll=n[level]);
  55.        for(i=ll,uu,
  56.           n[level+1]=i;
  57.           M[level+1]=M[level]*i;
  58.           R[level+1]=R[level]*i-M[level];
  59.           dd=gcd(M[level+1],R[level+1]);
  60.           M[level+1]=M[level+1]/dd;
  61.           R[level+1]=R[level+1]/dd;
  62.           A[i%4+1]=A[i%4+1]+1;
  63.           search(level+1);
  64.           A[i%4+1]=A[i%4+1]-1
  65.        )
  66.     )
  67. }

  68. search0()=
  69. {
  70.    n=vector(N());
  71.    M=vector(N());
  72.    R=vector(N());
  73.    A=vector(4);
  74.    c=0;
  75.    for(i=2,8,
  76.       n[1]=i;
  77.       R[1]=i-1;
  78.       M[1]=i;
  79.       A[i%4+1]=A[i%4+1]+1;
  80.       search(1);
  81.       A[i%4+1]=A[i%4+1]-1;
  82.    );
  83. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-19 10:29:54 | 显示全部楼层
呵呵,看来只有计算n=9才能打破记录
可能只有mathe....
数学星空 发表于 2010-1-19 09:52

用现在穷举的算法是无法破记录的了.倒是计算n=8问题不大.设置即使将所有数据保存下来都有可能,只是文件太大了,估计要超1G
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-19 11:13:13 | 显示全部楼层
用现在穷举的算法是无法破记录的了.倒是计算n=8问题不大.设置即使将所有数据保存下来都有可能,只是文件太大了,估计要超1G
mathe 发表于 2010-1-19 10:29

要是如15楼所言,不输出,只是统计,效果会怎样呢
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-3 00:44 , Processed in 0.049210 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表