疯猪 发表于 2009-3-21 04:46:38

有二个问题

下面程序是求下一个素数的程序,经验证,成功运行。但是有2个问题:
一:红色部分如果写成hugePrime=100000000000000000000000000000000000000000000000000000000就编辑不过,如何解决?
二:用hugePrime.DecLShift( 99 );来实现程序,结果会有<HugeCalc>的字符串插入,能否去掉?
#include <iostream.h>
#include <string.h>//可以使用string类型

#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" )



#if 1
        #define _Test_HI
        #define integer CHugeInt
#else
        #define _Test_HX
        #define integer CHugeIntX
#endif
//以上是一部分预处理程序
int main(int argc, char* argv[])
{
    int i;
    char c;//准备存取最后1位
        cout << endl << "下面将生成前 100 个百位素数(十进制下)。。。" << endl << endl;
        system( "pause" );//屏幕显示“按任何键继续”
        cout << endl;

        CHugeInt hugePrime((UINT32) 1 );
        hugePrime=10000;//设初值
   
//        hugePrime.DecLShift( 5 );        // 6位数
//下面是输出1000个素数
    /*        for ( UINT32 i=0; i<1000; ++i )
        {
        cout <<(LPCTSTR)hugePrime.NextPrime( hugePrime )<<endl ;
       
        }*/
//下面是输出下1个素数
   // cout <<(LPCTSTR)hugePrime.NextPrime( hugePrime )<<endl ;
cout <<(LPCTSTR)hugePrime.NextPrime(hugePrime)<<endl ;
//判断素数的长度 cout<<strlen(hugePrime)<<endl;
//以下是对结果的简单处理
/* i=strlen(hugePrime);
cout <<i<< endl;
c=hugePrime;
cout <<c<< endl;
        cout << endl;*/
   

        return 0;
}

gxqcn 发表于 2009-3-21 09:08:53

问题一:hugePrime=100000000000000000000000000000000000000000000000000000000编译不过
因为内部数据无法支持这么大的整数,改成字符串就可以了:hugePrime="100000000000000000000000000000000000000000000000000000000"

问题二:结果会有<HugeCalc>的字符串插入
这是未注册的缘故,关于未注册的限制及如何注册请见 HugeCalc.chm 相关页面。
页: [1]
查看完整版本: 有二个问题