大整数分解--适合两分子距离较近情况

尝试分解以下大整数:

8419248954524000439721779172023134688983838205866625782151550834434276874684863239544369195264071670152656061813873751842115416791829324879655667191724512456544905595733991629887800889255133717212624547817690492648616532902257249552981800714896543008295153051040335475732125114592095784407296265046992475467


### 1. 代码展示[^code]

```c
#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>
#include "dec.h"
using namespace std;
const char* N_str = "8419248954524000439721779172023134688983838205866625782151550834434276874684863239544369195264071670152656061813873751842115416791829324879655667191724512456544905595733991629887800889255133717212624547817690492648616532902257249552981800714896543008295153051040335475732125114592095784407296265046992475467";
const char* one_str = "1";

int main()
{
mpz_t n, one, kaifang, shang, yushu;

mpz_init_set_str(n,N_str,10);
mpz_init_set_str(one,one_str,10);

mpz_init(kaifang);
mpz_init(shang);
mpz_init(yushu);
mpz_sqrt(kaifang, n);
while(1)
{
mpz_fdiv_qr (shang, yushu, n, kaifang);
if(mpz_cmp_d(yushu, 0) == 0) break;
mpz_sub(kaifang, kaifang, one);
}
gmp_printf ("The two yinzi is %Zd and %Zd \n\n", shang, kaifang);

mpz_clear(n);
mpz_clear(shang);
mpz_clear(kaifang);
mpz_clear(yushu);
return 0;

}


```

### 2. 运行截图[^photo]
> * 请打开下列链接查看:

猜你喜欢

转载自www.cnblogs.com/taitai139/p/11848150.html