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

[分享] 单位分数难题续

[复制链接]
发表于 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-12-30 03:50 , Processed in 0.029945 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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