目录
  1. 1. yafu 的安装
    1. 1.1. windows 下的安装
    2. 1.2. linux 下的安装
      1. 1.2.1. STEP 1: 安装依赖环境(zlib/GMP/GMP-ECM/msieve)
      2. 1.2.2. STEP 2: 安装Yafu
      3. 1.2.3. 可能遇到的一些问题
    3. 1.3. yafu的使用方法
    4. 1.4. 使用yafu的时候遇到mismatched parens
Yafu安装及使用方法

yafu 的安装

windows 下的安装

https://sourceforge.net/projects/yafu/

下载后解压即可。

  • 解压后有yafu-Win32.exe和yafu-x64.exe,推荐使用64位的。

linux 下的安装

Linux下我没有尝试,这里附上他人的安装过程:

  • 我的linux环境: CentOS 6.7
  • 注意安装yafu、msieve、gmp、gmp-ecm在同一目录下
  • 我的安装位置:/root/sherlly

STEP 1: 安装依赖环境(zlib/GMP/GMP-ECM/msieve)

zlib

rpm -qa|grep zlib
yum install -y zlib-devel-1.2.3-29.el6.x86_64 zlib-1.2.3-29.el6.x86_64

GMP

rpm -qa|grep gmp

1,如果版本>6.0:

yum install -y gmp gmp-devel

2,如果版本<6.0或者没有找到:

wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2
tar jxvf gmp-6.1.2.tar.bz2
mv gmp-6.1.2 gmp
cd gmp
./configure
make
make install

图

GMP-ECM

wget https://gforge.inria.fr/frs/download.php/file/4663/ecm-6.2.tar.gz
tar zxvf ecm-6.2.tar.gz
mv ecm-6.2 gmp-ecm
cd gmp-ecm
./configure
//如果提示error: GMP 5.0.0 or newer is required则ecm选择低一点的版本或者升级gmp
make
make install

msieve

wget http://downloads.sourceforge.net/project/msieve/msieve/Msieve%20v1.52/msieve152.tar.gz
tar zxvf msieve152.tar.gz
mv msieve-1.52 msieve
cd msieve
make all

STEP 2: 安装Yafu

1,下载源代码

git clone https://github.com/DarkenCode/yafu.git
cd yafu

2,修改MakeFile文件

vim MakeFile
在122行左右位置添加如下语句:
LIBS+= -lc -lz

在大概68行位置找到
LIBS += -L../gmp/lib/linux/x86_64
改为
LIBS += -L../gmp/.libs

在大概71行位置找到
LIBS += -L../gmp-ecm/lib/linux/x86_64
改为
LIBS += -L../gmp-ecm/.libs

在大概95行位置找到
LIBS += -L../msieve/lib/linux/x86_64
改为
LIBS += -L../msieve

3,编译安装

64位:make x86_64 NFS=1
32位:make x86 NFS=1

//添加环境变量(此处yafu安装位置为/root/sherlly/yafu,根据实际安装位置修改)
echo "export PATH=/root/sherlly/yafu:\$PATH">>/etc/profile
source /etc/profile

//运行程序
yafu

图

可能遇到的一些问题

  • error: gnu/stubs-32.h: No such file or directory
yum install -y glibc-devel.i686 libstdc++-devel.i686
  • make: svnversion: Command not found

    yum install -y svn
    make all
  • error: mpz_aprcl.h: No such file or directory

vim top/calc.c
//#include "mpz_aprcl.h"
#include "./aprcl/mpz_aprcl.h"

vim factor/factor_common.c
//#include "mpz_aprcl.h"
#include "../top/aprcl/mpz_aprcl.h"

vim arith/arith3.c
//#include "mpz_aprcl.h"
#include "../top/aprcl/mpz_aprcl.h"
  • error while loading shared libraries: libgmp.so.10: cannot open shared object file: No such file or directory

    find / -name libgmp.so.*
    ln -s /usr/lib64/libgmp.so.3 /usr/lib64/libgmp.so.10

yafu的使用方法

使用cmd进入yafu的解压目录(为了方便的话,自己可以把该目录加入到环境变量。)

输入yafu-x64进入命令行

最常用的命令是factor(n),将n值分解

如分解987654321

完整命令:

cd D:

cd C:\Users\\*****\Desktop\题目\yafu (yafu安装地址)

yafu-x64.exe(推荐使用64位 yafu)

factor(987654321) (输入要分解的N即可)

结果:

图


使用yafu的时候遇到mismatched parens

这是因为在命令行里不支持过长的位数,所以我们只要把n的值从文件中去读取即可。

新建一个文件pcat.txt,内容里写上n的值,如:

966808932627497190635859236054960349099463975227350564265384373280336699853387254070662881265937565163000758606154308757944030571837175048514574473061401566330836334647176655282619268592560172726526643074499534129878217409046045533656897050117438496357231575999185527675071002803951800635220029015932007465117818739948903750200830856115668691007706836952244842719419452946259275251773298338162389930518838272704908887016474007051397194588396039111216708866214614779627566959335170676055025850932631053641576566165694121420546081043285806783239296799795655191121966377590175780618944910532816988143056757054052679968538901460893571204904394975714081055455240523895653305315517745729334114549756695334171142876080477105070409544777981602152762154610738540163796164295222810243309051503090866674634440359226192530724635477051576515179864461174911975667162597286769079380660782647952944808596310476973939156187472076952935728249061137481887589103973591082872988641958270285169650803792395556363304056290077801453980822097583574309682935697260204862756923865556397686696854239564541407185709940107806536773160263764483443859425726953142964148216209968437587044617613518058779287167853349364533716458676066734216877566181514607693882375533

注意:最后面一定要换行,不然会出现eof; done processing batchfile

然后运行命令为:

yafu-x64 "factor(@)" -batchfile pcat.txt

图

  • 注意:运行后,pcat.txt就会消失了。
文章作者: Sakura式
文章链接: http://yoursite.com/2020/11/14/Yafu%E5%AE%89%E8%A3%85%E5%8F%8A%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hexo
打赏
  • 微信
  • 支付寶