This highly depends on the size of your integers, and what form you expect 
them to have.
For factors of a few tens of bits (lets say up to something between 50 and 
80 bits), ECM should be the best.
For smaller factors, naive stuff .
For larger factors QS or NFS should be better.
We at least have Bill Hart's implem of QS in sage.
This is not very constructive but I don't have time to make a longer answer 
right now.

On Thursday, January 30, 2014 7:35:46 PM UTC+1, Ondřej Čertík wrote:
>
> Hi, 
>
> What is the state of the art library for factoring integers? 
> I was under the impression, that it is the GCM-ECM library 
> (http://ecm.gforge.inria.fr/). 
>
> I've been trying to use ECM and I noticed the following behavior: 
>
> sage: from sage.libs.libecm import ecmfactor 
> sage: N = 121 
> sage: factor(N) 
> 11^2 
> sage: ecmfactor(N, 1) 
> (True, 121) 
> sage: ecmfactor(N, 100) 
> (True, 121) 
> sage: ecmfactor(N, 200) 
> (True, 121) 
> sage: ecmfactor(N, 0) 
> (True, 121) 
> sage: ecmfactor(N, 0.) 
> (True, 11) 
>
>
> In other words, it never finds the factor 11, unless you give it B1=0.0 
>
> Compared to N=122, where it always finds it: 
>
> sage: N = 122 
> sage: factor(N) 
> 2 * 61 
> sage: ecmfactor(N, 1) 
> (True, 2) 
> sage: ecmfactor(N, 100) 
> (True, 2) 
> sage: ecmfactor(N, 200) 
> (True, 2) 
>
>
> I have a few questions: 
>
> * Does this mean that ECM only works sometimes? 
> * Is there a parameter B1, that always works? 
>
> In the README file of the ecm-6.4.4 package, I found: 
>
>        digits D  optimal B1   default B2           expected curves 
>                                                        N(B1,B2,D) 
>                                               -power 1         default 
> poly 
>           20       11e3         1.9e6             74               74 
> [x^1] 
>           25        5e4         1.3e7            221              214 
> [x^2] 
>           30       25e4         1.3e8            453              430 
> [D(3)] 
>           35        1e6         1.0e9            984              904 
> [D(6)] 
>           40        3e6         5.7e9           2541             2350 
> [D(6)] 
>           45       11e6        3.5e10           4949             4480 
> [D(12)] 
>           50       43e6        2.4e11           8266             7553 
> [D(12)] 
>           55       11e7        7.8e11          20158            17769 
> [D(30)] 
>           60       26e7        3.2e12          47173            42017 
> [D(30)] 
>           65       85e7        1.6e13          77666            69408 
> [D(30)] 
>
>           Table 1: optimal B1 and expected number of curves to find a 
>           factor of D digits with GMP-ECM. 
>
> The only documentation about ECM that I found in Sage is this: 
>
> http://www.sagemath.org/doc/bordeaux_2008/integer_factorization.html 
> http://www.sagemath.org/doc/reference/libs/sage/libs/libecm.html 
>
> But it doesn't answer my questions above. 
> If the answer is that ECM only works sometimes, but it's not a 
> reliable way to factor integers, what is the fastest library that 
> always works? 
>
> Many thanks, 
> Ondrej 
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to