找回密码
 欢迎注册
查看: 22246|回复: 8

[讨论] 这串数最多有几个数?

[复制链接]
发表于 2018-3-28 16:42:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
在1——1024这1024个正整数中,选一串数,使这串数中的任意2个数相加,和都不相同。
这串数是:1,2,3,5,8,13,21,34,55,89,144,233,377,610,987。
这串数最多有15个数。还有更多的吗?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-3-28 17:03:14 | 显示全部楼层
至少能找到28个:
1, 2, 3, 5, 8, 13, 21, 30, 39, 53, 74, 95, 128, 152, 182, 212, 258, 316, 374, 413, 476, 531, 546, 608, 717, 798, 862, 965

在这里找到的:
https://oeis.org/A011185

估计还能更多。

点评

太好了!谢谢KeyTo9_Fans!  发表于 2018-3-28 19:27
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-3-30 09:07:09 | 显示全部楼层
KeyTo9_Fans 发表于 2018-3-28 17:03
至少能找到28个:
1, 2, 3, 5, 8, 13, 21, 30, 39, 53, 74, 95, 128, 152, 182, 212, 258, 316, 374, 413, ...


太好了!谢谢KeyTo9_Fans! 不好意思,还是想问。
在1——1024这1024个正整数中,选一串数,使这串数中的任意3个数相加,和都不相同。
这串数:1,4,7,13,24,44,81,149,274,504,927, ...
这串数最多有几个数?谢谢!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-3-31 23:00:27 | 显示全部楼层
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-6-29 13:13:02 | 显示全部楼层
存在素数P,P(P—1)<N,则在1~N之中,最多可选P—1个数,两两之和不等。关于此类问题,有两个疑问,请各位老师指点一下。
1.如何证明选P个数不可以
2.好像不是任何N都可以,比如N=9,P=3,最多不止选2个数啊。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-6-29 15:20:48 | 显示全部楼层
这个题目采用链接中方法,选择P=31,可以构造出a=161,b=1,c=13时30个数:
1 8 9 19 95 147 166 186 191 232 265 269 291 307 320 334 388 460 483 495 523 540 572 587 593 596 654 702 704 738
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-6-29 15:53:43 | 显示全部楼层
选择P=37,g=5,a=1329,b=1,c=1 并且抛弃两个元素,可以得到34个数的满足条件的解:
1 31 33 86 115 173 174 191 214 236 264 270 274 383 476 481 489 500 520 546 612 615 627 676 747 780 794 801 869 904 946 955 971 998
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-6-29 16:02:46 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <algorithm>
  3. using namespace std;
  4. #include <stdlib.h>
  5. #define P 37
  6. #define M (P*(P-1))
  7. #define b 1
  8. #define R 5 //R must be primitive root of prime P
  9. #define D 3 //look for total P-D elements

  10. int max_diff;
  11. int gc,gb, ga;
  12. //the function assume a<=c
  13. int gcd(int a, int c)
  14. {
  15.     if(a==0)return c;
  16.     return gcd(c%a, a);
  17. }

  18. void dump()
  19. {
  20.     printf("a=%d, b=%d, c=%d, diff = %d\n",ga,gb,gc,max_diff);
  21. }

  22. int main()
  23. {
  24.     int c,i;
  25.     int buf[P-1];
  26.     int r;
  27.     int u,v;
  28.     for(c=1;c<P/2;c+=2){
  29.       if(gcd(c,P-1)>1)continue;
  30.        u=b*(P-1); v=0;
  31.        buf[0]=u;
  32.        for(i=1;i<P-1;i++){
  33.             u*=R;u%=M;
  34.             v+=c*P;v%=M;
  35.             buf[i]=(u+v)%M;
  36.        }
  37.        sort(buf,buf+P-1);
  38.        for(i=D;i<P-1;i++){
  39.            if(buf[i]-buf[i-D]>=max_diff){
  40.                max_diff=buf[i]-buf[i-D];ga=M-buf[i]+1;gb=b;gc=c;dump();
  41.            }
  42.        }
  43.        for(i=0;i<D;i++){
  44.            if(buf[i]+M-buf[P-1-D+i]>=max_diff){
  45.               max_diff=buf[i]+M-buf[P-1-D+i];ga=M+1-buf[i];gb=b;gc=c;dump();
  46.            }
  47.        }
  48.     }
  49.     printf("a=%d, b= %d, c=%d, min_range %d\n",ga, gb,gc, M+1-max_diff);
  50.    
  51.     u=b*(P-1);v=ga%M;
  52.     buf[0]=(u+v)%M;
  53.     for(i=1;i<P-1;i++){
  54.        u*=R;u%=M;
  55.        v+=gc*P;v%=M;
  56.        buf[i]=(u+v)%M;
  57.     }
  58.     sort(buf,buf+P-1);
  59.     for(i=0;i<P-D;i++){
  60.        printf("%d ",buf[i]);
  61.     }
  62.     printf("\n");
  63.     return 0;
  64. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-11-23 20:33 , Processed in 0.027238 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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