- 注册时间
- 2007-12-26
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 92615
- 在线时间
- 小时
|
发表于 2008-6-26 19:05:27
|
显示全部楼层
在发8#时要下班了,所以比较匆忙,
该程序还可更精简的,比如 hugeProduct 仅用一条语句即可求得:hugeProduct.Primorial( 100 );
下面的程序可以分别求与在10内、100内、1000内、。。。的所有素数的同余数为(-1)的最小素数:- // HugeCalcDemo.cpp : Defines the entry point for the console application.
- //
-
- // Project -> Setting -> C/C++ -> Code Generation --> Use run-time library:
- // Win32 Debug: Debug Multithreaded DLL
- // Win32 Release: Multithreaded DLL
-
- #include < stdio.h >
-
- #include "../../../HugeCalc_API/CppAPI/Include/HugeCalc.h" // 公共接口
- #include "../../../HugeCalc_API/CppAPI/Include/HugeInt.h" // 10进制系统
- #include "../../../HugeCalc_API/CppAPI/Include/HugeIntX.h" // 16进制系统
-
- #pragma message( "automatic link to ../../../HugeCalc_API/CppAPI/Lib/HugeCalc.lib" )
- #pragma comment( lib, "../../../HugeCalc_API/CppAPI/Lib/HugeCalc.lib" )
-
- int main(int argc, char* argv[])
- {
- // printf("Hello World!\n");
- CHugeIntX hugeAdd, hugeResult;
- UINT32 n, k;
-
- printf( "Call %s\r\n", HugeCalc::GetVer());
-
- if ( HC_LICENSE_NONE == HugeCalc::GetLicenseLevel())
- {
- printf( "\r\n警告:您未通过 HugeCalc.dll 的许可认证!\r\n" \
- "\r\n解决方案可选下列方案之一:" \
- "\r\n 一、请将本程序移动到“/CopyrightByGuoXianqiang/[../]”目录下运行;" \
- "\r\n 二、或请在 HugeCalc.chm 中进行注册(一劳永逸)。\r\n\r\n" );
-
- system( "pause" );
- return (-1);
- }
-
- for ( n=10; n<=1000000; n*=10 )
- {
- // 初始化
- HugeCalc::EnableTimer( TRUE );
- HugeCalc::ResetTimer();
-
- hugeAdd.Primorial( n );
- hugeResult = -1;
-
- k = 0;
- do
- {
- ++k;
- hugeResult += hugeAdd;
- } while( !hugeResult.IsPrime() );
-
- // 暂停计时
- HugeCalc::EnableTimer( FALSE );
-
- // 输出
- printf( "%s\tP = %u*%u# - 1 = %s\r\n", HugeCalc::GetTimerStr( FT_HHMMSS_ms ), k, n,
- hugeResult.GetStrRadix( 10, NULL, FS_NORMAL ));
- }
-
- system( "pause" );
-
- return 0;
- }
复制代码 不过,本题若限定仅用标准库就麻烦了,难点全在大数的素性判定上(当然大数的四则运算也是基本)。 |
|