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

[讨论] 关于单位分数的一些难题

[复制链接]
发表于 2010-1-13 16:06:07 | 显示全部楼层
采用25#附件中给出的算法,让N=8,k=6 对于序列$n_1,n_2,...,n_8$,定义$R_0=1,R_1=n_1-1,R_t=n_tR_{t-1}-\prod_{i=1}^{t-1}n_i$ 对于候选序列$n_1,n_2,...,n_k$,我们需要判断 $(\prod_{i=1}^kn_i)^2+R_k$是否有关于$R_k$和$-\prod_{i=1}^kn_i$同余的因子 由此在${\prod_{i=1}^k n_i}/{R_k}$不是太大的情况(比如小于1000),我们可以穷举所有这样可能的因子. 但是如果合格比例比较大的时候,可能采用因子分解$(\prod_{i=1}^kn_i)^2+R_k$的方法比较. 不过我们可以用C语言写一个程序,将比例比较小的情况全部处理,然后余下的部分输出到一个文件,在用其它工具对这些数据进行因子分解,然后继续处理. 当然文章里面还有一个重要的筛选条件是对于任意$1<=t<=k$, ${\prod_{i=1}^tn_i}/{R_t}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-14 09:23:03 | 显示全部楼层
注意到,搜索过程中能搜到最后一层的几乎都会产生解。 是否可以由这个来提前剪枝?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-1-14 09:28:56 | 显示全部楼层
以下附件对于mathe研究计算s(8) 可能会有帮助... S0025-5718-99-01088-1.pdf (269.38 KB, 下载次数: 2)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-1-14 09:46:53 | 显示全部楼层
下面附件是有关如何计算单位分数的一些算法研究及计算程序... 或许对编程有所帮助 EgyptianFractions.pdf (130.49 KB, 下载次数: 1)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-14 11:55:53 | 显示全部楼层
注意到,搜索过程中能搜到最后一层的几乎都会产生解。 是否可以由这个来提前剪枝? medie2005 发表于 2010-1-14 09:23
什么叫搜索到最后一层,直接搜索到8层吗? 我现在写了个程序,统计了对s(8)搜索到6层产生的数据分布情况 发现计算出来的$\prod_{i=1}^6n_i$没有超过14位数的,这是一个很好的信息. 也就是说$(\prod_{i=1}^6n_i)^2+R_6$不会超过28位数. 也就是我们需要一个能够对不超过28位数进行确定性素性判断和因子分解的程序. 而搜索到6层产生的所有候选解只有3382746个,不算太大. 但是其中${\prod_{i=1}^6n_i}/{R_6}$通常都比较大,主要分布在7位数,所以如果如25#论文采用试初法的确效率不高,而采用因子分解的方法应该更加有效
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-14 11:56:43 | 显示全部楼层
统计前6层的代码,大家看看有没有错误,完全按照那个论文上的算法写的
  1. #include "stdafx.h"
  2. #include <math.h>
  3. #define L 40
  4. #define N 8
  5. #define K 6
  6. unsigned n[K];
  7. unsigned long long M[K];
  8. unsigned long long R[K];
  9. unsigned long long maxM;
  10. int A[4];
  11. long long count[K];
  12. long long gc[L];
  13. void output(int level, int overflow)
  14. {
  15. if(level==K){
  16. int a3=A[3]%4;
  17. int a1=A[1]%4;
  18. if(A[2]==1&&a1==1)
  19. return;
  20. if(A[0]==1&&a3==0)
  21. return;
  22. if(A[0]==0&&A[2]==0){
  23. if((a1==1||a1==2)&&a3<2)
  24. return;
  25. }
  26. int c=(int)ceil(log10((double)(M[level-1])));
  27. if(c>=L)c=L-1;
  28. if(c<0)c=0;
  29. gc[c]++;
  30. }
  31. if(M[level-1]>maxM)maxM=M[level-1];
  32. count[level-1]++;
  33. }
  34. unsigned long long gcd(unsigned long long x,unsigned long long y)
  35. {
  36. while(y!=0){
  37. unsigned long long r=x%y;
  38. x=y;
  39. y=r;
  40. }
  41. return x;
  42. }
  43. void search(int level)
  44. {
  45. if(level>=K){
  46. output(level,0);
  47. return;
  48. }
  49. double ll=(double)M[level-1]/R[level-1];
  50. double uu=ll*(N-level);
  51. if(uu>=4294967295.5||uu>=18446744073709551615.0/M[level-1]){///overflow
  52. output(level,1);
  53. return;
  54. }
  55. unsigned li=(unsigned)ceil(ll);
  56. unsigned ui=(unsigned)uu;
  57. if(li<=n[level-1])li=n[level-1]+1;
  58. unsigned i;
  59. for(i=li;i<=ui;i++){
  60. if(gcd(M[level-1],i)!=1)
  61. continue;
  62. n[level]=i;
  63. M[level]=M[level-1]*i;
  64. R[level]=R[level-1]*i-M[level-1];
  65. A[i%4]++;
  66. search(level+1);
  67. A[i%4]--;
  68. }
  69. }
  70. void search0()
  71. {
  72. int i;
  73. for(i=0;i<4;i++)A[i]=0;
  74. for(i=2;i<=7;i++){
  75. n[0]=i;
  76. R[0]=i-1;
  77. M[0]=i;
  78. A[i%4]++;
  79. search(1);
  80. A[i%4]--;
  81. }
  82. }
  83. int _tmain(int argc, _TCHAR* argv[])
  84. {
  85. search0();
  86. int i;
  87. for(i=0;i<K;i++){
  88. printf("count[%d]=%lld\n",i+1,count[i]);
  89. }
  90. for(i=0;i<L;i++)
  91. printf("gc[%d]=%lld\n",i,gc[i]);
  92. printf("maxM=%llud\n",maxM);
  93. return 0;
  94. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-14 12:19:13 | 显示全部楼层
什么叫搜索到最后一层,直接搜索到8层吗? ============================== 我是指搜索到第6层。后两个解不定方程就可以(看s(7)的结果,要解的方程是很少的)。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-14 12:20:09 | 显示全部楼层
那可以s(8)的情况不同,我上面估计出来还有 3382746 个候选的情况
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-14 12:21:45 | 显示全部楼层
你是如何过滤的,我试了一下,s(7)情况余下1378个方程,好像解远远没有这么多
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-1-14 12:31:32 | 显示全部楼层
本帖最后由 medie2005 于 2010-1-14 12:33 编辑 呵呵,我是猜测的,没实际算过。最后的不定方程有解的可能性比较大。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-11-21 21:21 , Processed in 0.067044 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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