找回密码
 欢迎注册
楼主: medie2005

[讨论] 数字乘积

[复制链接]
 楼主| 发表于 2009-3-3 09:02:58 | 显示全部楼层
今天抽空实现一下,应该能找到12的.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-3-3 09:16:35 | 显示全部楼层
原帖由 无心人 于 2009-3-2 17:43 发表
粗略估计在10^60内你说的数字就是
小于199 * 125 * 85 * 70个

不知道每个数字的对应数字是多少候选??
应该是一对多啊

数目应该约等于$1/{4}!log^4(10^60)/{log(2)log(3)log(5)log(7)}~=6364870.77$
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-3-3 10:32:17 | 显示全部楼层
我穷搜10的
竟然发现Cache 10^8以下的最高是4
不知道错在哪里??
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-3-3 10:56:50 | 显示全部楼层
最新测试,似乎10对应的素数大于10^9
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-3-3 10:58:44 | 显示全部楼层

  1. char pl[100000000];
  2. unsigned int pd[10000];

  3. unsigned int prodd(unsigned int n)
  4. {
  5.         unsigned int r = 1;
  6.     if (n < 10000) return pd[n];
  7.         while (n >= 10000)
  8.         {
  9.        r *= pd[n % 10000];
  10.            n /= 10000;
  11.         }
  12.         if (n != 0) r *= pd[n % 10000];
  13.         return r;
  14. }

  15. void init(void)
  16. {
  17.         unsigned int i, j, k, l, n;

  18.         for (i = 0; i <= 9; i ++)
  19.                 for (j = 0; j <= 9; j ++)
  20.                         for (k = 0; k <= 9; k ++)
  21.                                 for (l = 0; l <= 9; l ++)
  22.                                 {
  23.                     if (i == 0)
  24.                                         {
  25.                                                 if (j == 0)
  26.                                                 {
  27.                                                         if (k == 0)
  28.                                                                 n = l;
  29.                                                         else
  30.                                                                 n = k * l;
  31.                                                 }
  32.                                                 else n = j * k * l;
  33.                                         }
  34.                                         else n = i * j * k * l;

  35.                                         pd[1000*i + 100*j + 10*k + l] = n;
  36.                                 }


  37.         for (i = 0; i <= 9; i ++)
  38.                 pl[i] = 0;

  39.         for (i = 10; i < 100000000; i ++)
  40.         {
  41.                 k = prodd(i);
  42.         pl[i] = pl[k] + 1;        
  43.         }
  44. }       

  45. int isprime(unsigned int n)
  46. {
  47.         if (n % 2 == 0) return 0;
  48.         if (n % 3 == 0)        return 0;
  49.         if (n % 5 == 0) return 0;
  50.         if (n % 7 == 0) return 0;
  51.         if (n % 11 == 0) return 0;
  52.         if (n % 13 == 0) return 0;
  53.         if (n % 17 == 0) return 0;
  54.         if (n % 19 == 0) return 0;
  55.         if (n % 23 == 0) return 0;
  56.         if (n % 29 == 0) return 0;
  57.         if (n % 31 == 0) return 0;
  58.     return 1;
  59. }

  60. int _tmain(int argc, _TCHAR* argv[])
  61. {
  62.         unsigned int i, k = 1, n, p;
  63.         init();
  64.         printf("init finished.\n");

  65.         unsigned int max = 0;
  66.         for (i = 0; i < 100000000; i ++)
  67.       if (max < (unsigned int)pl[i]) max = (unsigned int)pl[i];

  68.         printf("MAX Product of digits level: %u\n", max);

  69.     for (i = 100000001; i <= 4099999999; i ++)
  70.         {
  71.             if (isprime(i))
  72.                 {
  73.                   n = prodd(i);
  74.                   p = 0;
  75.                   while (n >= 100000000)
  76.                   {
  77.                           p ++;
  78.                           n = prodd(n);
  79.           }
  80.                   
  81.                   p += pl[n] + 1;
  82.                   if (p >= 10)
  83.                           printf("%u:  %u\n", i, p);
  84.                 }
  85.         k ++;
  86.                 if (k % 100000000 == 0)
  87.                 {
  88.                         printf("\n%u\n", k);
  89.                 }
  90.         }
  91.         return 0;
  92. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-3-3 11:03:37 | 显示全部楼层
P(3777888899) = 10
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-3-3 11:05:06 | 显示全部楼层
11的大于10^10
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-3-3 13:11:05 | 显示全部楼层
因子都是2,3,5,7的最小10阶数为$4996238671872=2^19*3^4*7^6$
其次为$937638166841712=2^4*3^20*7^5$

而通过第一个数字,可以构造出一个素数277777788888989。11阶的基本应该不能比这个更加小了。
应该只需要穷举第一个数字的所有可能组合就可以了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-3-3 13:19:19 | 显示全部楼层
呵呵,为了保险,还是得找10^15内的10阶数,然后,看其中有没有更优者.
不过,mathe给的结果确实是使p(n)=11的最小素数n.

[ 本帖最后由 medie2005 于 2009-3-3 13:21 编辑 ]
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-3-3 13:37:33 | 显示全部楼层
p(n)=12要困难很多.
我目前正在找10^100内的11阶数, 但目前未发现一个.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-4-25 18:21 , Processed in 0.047396 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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