File: rtestifactor.mac

package info (click to toggle)
maxima-sage 5.45.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 113,788 kB
  • sloc: lisp: 440,833; fortran: 14,665; perl: 14,369; tcl: 10,997; sh: 4,475; makefile: 2,520; ansic: 447; python: 262; xml: 59; awk: 37; sed: 17
file content (124 lines) | stat: -rw-r--r-- 2,360 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/* kill(all); */
/* done; */

/* PRIMALITY TESTS */

/* 0 and 1 are not primes */
primep(0);
false;

primep(1);
false;

primep(2);
true;

primep(6);
false;

/* this is checked from the list of small primes */
primep(1741);
true;

primep(8989);
false;

/* this is the deterministic primality test */
primep(1738727);
true;

primep(5178997768267);
false;

next_prime(100002100000);
100002100043;

prev_prime(100002100042);
100002099971;

/* Bug reported on mailing list by Walter Faxon on October 25th, 2017: "Bug in Maxima function primes()" */
[primes(10005, 10009), primes(10006, 10009), primes(10007, 10009), primes(10008, 10009), primes(10009, 10009), primes(10010, 10010), primes(9972, 10007), primes(9973, 10007), primes(1, 2), primes(2, 2), primes(2, 3)];
[[10007, 10009], [10007, 10009], [10007, 10009], [10009], [10009], [], [9973, 10007], [9973, 10007], [2], [2], [2, 3]]$

/* FACTORING TESTS */

ifactors(1);
[];

/* trial divisions */
ifactors(226800);
[[2,4],[3,4],[5,2],[7,1]];

/* limiting to factors */
ev( ifactors(226800), factors_only:true );
[2,3,5,7];

/* this is still found by trialdivision */
ifactors(5178997768267);
[[183823,1],[28173829,1]];

/* disable Pollard p-1 to test Pollard rho */
(save_pm1 : pollard_pm1_tests, pollard_pm1_tests : 0);
0;

/* this should be found by Pollard rho */
ifactors(25091429338142886343);
[[3873703993, 1], [6477373951, 1]];

(pollard_pm1_tests : save_pm1, 0);
0;

(save_prt : pollard_rho_tests, pollard_rho_tests : 0);
0;

/* now this should be found by Pollard p-1 */
ifactors(25091429338142886343);
[[3873703993, 1], [6477373951, 1]];

(pollard_rho_tests : save_prt, 0);
0;

/* disable Pollard rho and p-1 to test ECM */
(save_prt : pollard_rho_tests, pollard_rho_tests : 0);
0;

(save_pm1 : pollard_pm1_tests, pollard_pm1_tests : 0);
0;

/* now this should be found by ECM */
ifactors(25091429338142886343);
[[3873703993, 1], [6477373951, 1]];

(pollard_rho_tests : save_prt, 0);
0;

(pollard_pm1_tests : save_pm1, 0);
0;

/* MODULAR POWERS AND INVERSE */

power_mod(2^64,2,2^64-2^34+1);
240518168561;

inv_mod(42,2^64-2^34+1);
18007535864707547137;

/* negative exponents */
power_mod(3,-1,41);
14;

inv_mod(3,41);
14;

power_mod(2^64,-2,2^64-2^34+1);
18446743816011514066;

inv_mod(2^128,2^64-2^34+1);
18446743816011514066;

/* zero divisors */
inv_mod(3,42);
false;

power_mod(3,-1,42);
false;