数学研发网设为首页收藏本站

数学研发论坛

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

[擂台] 连续自然数构成的素数

[复制链接]
发表于 2008-4-23 17:42:57 | 显示全部楼层
定时以一个小时保存一次状态
和状态的MD5编码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-23 17:43:32 | 显示全部楼层
原帖由 无心人 于 2008-4-23 17:42 发表


你加上定时存盘和冗余纠错
我给你挂服务器上三个月

逃跑
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-23 17:47:04 | 显示全部楼层


这么大的工作量
无法保证在运行时机器断电



不做我说的那两点
最大运行时间只能是24小时
做不到7天
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-23 20:01:12 | 显示全部楼层
如果降序排列
在82产生素数

82818079...987654321是素数
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-23 20:50:36 | 显示全部楼层
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-24 07:49:32 | 显示全部楼层
无心人上面给出的外国网址,我去看了一下,他们给出的通项式
1/81*(10^(n+1)-9n-10)
当n在1至9时,符合我的连续自然数形式,当n=10以后,不满足连续自然数。
如n=10时,计算值1234567900,不是我要的12345678910
n=11时,计算值12345679011,不是我要的1234567891011
n=17,12345679012345677
请无心人验证我的计算是否正确
说明这个通项式不是连续自然数的通项式
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-24 08:06:55 | 显示全部楼层

回复 26# 的帖子

文中说过的,该公式仅适用于“up to n=9”
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-24 08:08:17 | 显示全部楼层
而对于n在10和99之间,100和999之间等等,都有类似的公式,只是一些系数不同。不过这个公式好像用处不大
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-24 09:12:25 | 显示全部楼层

快速测试到某个连续自然数是否为素数的代码

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <assert.h>

  4. #include "../../../HugeCalc_API/CppAPI/Include/HugeCalc.h"        // 公共接口
  5. #include "../../../HugeCalc_API/CppAPI/Include/HugeInt.h"         // 10进制系统

  6. #pragma message( "automatic link to ../../../HugeCalc_API/CppAPI/Lib/HugeCalc.lib" )
  7. #pragma comment( lib, "../../../HugeCalc_API/CppAPI/Lib/HugeCalc.lib" )


  8. #define NUMB                        82
  9. #define DIGITS_OF_NUMB        2        // digits of NUMB
  10. #define POW10_DIGITS        100        // 10^DIGITS_OF_NUMB

  11. int main( void )
  12. {
  13.         const UINT32 len = ( NUMB + 1 )*DIGITS_OF_NUMB - ( POW10_DIGITS - 1 ) / 9;

  14.         char *pBuf, *p;
  15.         UINT32 i, d=0;

  16.         p = pBuf = new char[len + 1];
  17.         assert( NULL != pBuf );

  18.         memset( pBuf, 0, ( len + 1 )*sizeof( char ));
  19. #if 0
  20.         for ( i = 1; i <= NUMB; ++i )
  21. #else
  22.         for ( i = NUMB; i > 0; --i )
  23. #endif
  24.         {
  25.                 d = sprintf( p+=d, "%u", i );
  26.         }

  27.         assert( strlen(pBuf) == len );

  28.         HugeCalc::EnableTimer();

  29.         printf( CHugeInt( pBuf ).IsPrime() \
  30.                 ? "Is a prime number!\r\n" \
  31.                 : "Is not a prime number.\r\n" );

  32.         HugeCalc::EnableTimer( FALSE );
  33.         printf( "computation took %s\r\n", HugeCalc::GetTimerStr( FT_HHMMSS_ms ));

  34.         delete []pBuf;

  35.         return 0;
  36. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-24 10:50:58 | 显示全部楼层


玩素性检测看来不行了

可以考虑玩分解
不过分解代价很高
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2017-7-26 18:32 , Processed in 0.194905 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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