巨无霸数如何计算
一个很大的数如何计算,比如:12345678910111213141516171819......100除以4,这个巨无霸数已经超过了常规条件下的所有数据类型。
Python大数计算时非常快,听说底层是用c/c++来写的(不知道是不是真的),
大数计算时算法优化了,具体怎么实现的,我也很想知道,不过看不懂Python代码。
#include <stdio.h> #include <stdbool.h> // 这只是一个示例,代码非常简单便于理解,当然运行效率也最差 void foo( const char* a, unsigned b ) { bool f = false; unsigned carray = 0; for( ; *a; ++a ) { carray = carray*10 + (*a-'0'); if( carray/b!=0 || f ) { putchar( carray/b + '0' ); f = true; } carray %= b; } if( !f ) putchar( '0' ); if( carray != 0 ) printf( " ...... %u", carray ); putchar( '\n' ); } int main( void ) { foo( "12345678910111213141516171819100", 4u ); // 输出 3086419727527803285379042954775 foo( "123", 4u ); // 输出 30 ...... 3 foo( "0", 4u ); // 输出 0 }