二次筛选算法实现

时间:2013-11-05 04:00:52

标签: java encryption cryptography rsa maple

我在Maple中有以下二次筛分算法代码:

  QS := proc(n::posint, (c := 1.2, cutoff := 7))
local st, nfb, svprimes, svplogs, nsvprimes, M, sievearray, polroots,
      kn, b, fb, rels, A, deps;
st := Initialization(n,c,cutoff);
print('Using multiplier : ');
print(st[1]);
print('Using smoothness bound: ');
print(st[3]);
fb := st[6];
print('Size of factor base: ');
print(ArrayNumElems(st[6]));
svprimes := st[7];
svplogs := st[8];
nsvprimes := st[9];
M := st[5];
sievearray := st[11];
polroots := st[10];
print('Sieving interval of length : ');
print(2*M+1);
sieve(svprimes, svplogs, nsvprimes, M, sievearray, polroots);
print('Sieving done, searching for smooth values.. ');
kn := st[2];
b := st[4];
rels := FindRelations[kn, b, M, fb, sievearray];
print(LinearAlgebra:-RowDimension(A));
gc();
print('Solving a matrix of size ');
print(LinearAlgebra:-Dimension(A));
deps := Dependencies(A);
print('Number of linear dependien fopund: ');
print(nops(deps));
print('Factors: ');
FindFactors(n, rels, deps)
and proc:

出现以下错误:错误,“(”意外。有人可以帮我解决这个问题吗?另外我想知道是否可以将此代码转换为Java或C代码?我不是要求任何人这样做,而是想知道是否有可能。我会自己试一试,但如果有人想要,欢迎你。这是一个二次筛分算法,我试图用它来计算超过一百位数的长数。

1 个答案:

答案 0 :(得分:0)

更改,

QS := proc(n::posint, (c := 1.2, cutoff := 7))

要,

QS := proc(n::posint, c := 1.2, cutoff := 7)

如果您打算将以下内容作为函数调用,请更改

FindRelations[kn, b, M, fb, sievearray];

要,

FindRelations(kn, b, M, fb, sievearray);

更改,

and proc:

要,

end proc:

在所有这些print语句中将所有单引号(不引用引号,到Maple)更改为单引号(名称引号)或双引号。更好的是,使用userinfo语句。

尝试像这样可靠地调用gc()不一定能按预期工作。