       Re: How do little quickest ?

```Artur wrote:
> Dear Mathematica Gurus!
> Who know how do quickest following prcedure:
>
> aa = {}; Do[Print[x]; rmin = 10^10; k = 2^x; w = Floor[(k - 1)/2];
>  Do[If[GCD[n, k, k - n] == 1, m = FactorInteger[k n (k - n)]; rad = 1;
>  AppendTo[aa, rmin], {x, 2, 30}]; aa
>
> Best wishes
> Artur

The main speed improvement is to separate the FactorInteger uses, so
that you are not needing to split the large products. After that you can
get modest improvements by avoiding the GCD, avoiding the factorization
of 2^x, etc. The code below handles 2^26 in around 11 minutes, and
roughly doubles for each increment of x. This doubling appears to be
largely due to doubling the number of iterations. I expect that will
persist a while, possibly to 30. Eventually one will also hit the
effects of FactorInteger on larger numbers causing further slowdowns.

Timing[
t = TimeUsed[];
Table[
Print["x ",x];
rmin = 10^10;
k = 2^x;
w = 2^(x-1) - 1;
Do[
m = Join[FactorInteger[n], FactorInteger[k-n]];
, {n,1,w,2}];
Print[(t2 = TimeUsed[])-t];
t = t2;
rmin
, {x, 2, 26(*30*)}]]

x 2
0.
x 3
0.
x 4
0.004
x 5
0.
x 6
0.
x 7
0.001
x 8
0.000999
x 9
0.002
x 10
0.004
x 11
0.007998
x 12
0.013998
x 13
0.028996
x 14
0.059991
x 15
0.121981
x 16
0.247962
x 17
0.511923
x 18
1.04584
x 19
2.12268
x 20
4.31834
x 21
8.99563
x 22
18.5022
x 23
38.2052
x 24
78.97
x 25
164.433
x 26
345.533

Out= {663.131, {6, 14, 30, 30, 42, 30, 78, 182, 1110, 570,
1830, 6666, 2310, 2534, 5538, 9870, 20010, 141270, 14070,
480090, 155490, 334110, 1794858, 2463270, 2132130}}

Daniel Lichtblau
Wolfram Research

```

• Prev by Date: Re: How do little quickest ?
• Next by Date: Re: Fourier Transform
• Previous by thread: Re: Re: How do little quickest
• Next by thread: Re: How do little quickest ?