使用openssl中的大数库,需要的及头文件、链接库、动态库到下载http://www.pudn.com/downloads212/sourcecode/windows/detail998667.html
#include "openssl/bn.h" #include "string.h" #include "stdlib.h" #pragma comment(lib, "ssleay32.lib") #pragma comment(lib, "libeay32.lib") char source[1024*10] = {0}; char end[1024*10] = {0}; void main(int, char **, char **) { //产生字符串“123345.....200720082009” int i = 1; char tmp[10] = {0}; for (i = 1; i<=2009; i++) { memset(tmp, 0x00, sizeof(tmp)); _itoa(i, tmp, 10); strcat((char *)source, tmp); } //打印出来 // printf(source); printf("/n"); //形成大数,做被除数,"12345.......200720082009" BIGNUM *a = BN_new (); BN_dec2bn (&a, source); //形成大数,做除数,"9" BIGNUM *b = BN_new (); BN_dec2bn (&b, "9"); //两个大数取余, a/b BIGNUM *r = BN_new (); //r 中放余数 BIGNUM *dv = BN_new (); //dv 中放商 BN_CTX *ctx = BN_CTX_new (); BN_div (dv, r, a, b, ctx); // dv = a/b, r = a%b BN_CTX_free (ctx); //打印结果 printf("%s/n", BN_bn2dec (r)); }
余数为3。