fu_prp 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/MyClass.rb +161 -0
- data/bin/glade/MyClass.glade +115 -0
- data/fu_prp.rb +14 -0
- metadata +91 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 4704ebafd806f9c13ba246dbb8bfc74d8daeb7f8
|
|
4
|
+
data.tar.gz: 3084eacdc8470199f379d591f11ac39e48372ec1
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 7b362e906c0bd3acd618d91d4a03fd355b62b458d68c838fd529c86b97c6faacf82b2e7c90d6e7ae1b35ae9a3129ac8944ba237cdb565b4c0f6d33b23c4fd2fd
|
|
7
|
+
data.tar.gz: 7c2f507ee6baa388b955ccf992a74688d4d009e99eff763b8f35dccd583cd9afe30ed873ce36b9df6dd7efa9b15c6f760e13c451d7c072ab7e8105ffb1f15f93
|
data/bin/MyClass.rb
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
|
|
2
|
+
class Prp
|
|
3
|
+
|
|
4
|
+
def tf
|
|
5
|
+
return 0 if @n < 3
|
|
6
|
+
factors = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 3733, 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, 3823, 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, 3911, 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, 4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 4073, 4079, 4091, 4093, 4099, 4111, 4127, 4129, 4133, 4139, 4153, 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289, 4297, 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 4421, 4423, 4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, 4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759, 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, 4943, 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, 5639, 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, 6067, 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, 6229, 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, 6373, 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, 6577, 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, 6763, 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, 6841, 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, 6947, 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, 7573, 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, 7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, 7927, 7933, 7937, 7949, 7951, 7963, 7993, 8009, 8011, 8017, 8039, 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, 8117, 8123, 8147, 8161, 8167, 8171, 8179, 8191]
|
|
7
|
+
@n < 2**64 ? sqrt = Math.sqrt(@n).to_i : sqrt = 2**64
|
|
8
|
+
factors.each do |i|
|
|
9
|
+
return i if @n%i == 0
|
|
10
|
+
return 1 if i >= sqrt
|
|
11
|
+
end
|
|
12
|
+
0
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def prp2?
|
|
16
|
+
b = 2
|
|
17
|
+
bin = (@n-1).to_s(2)[1..-1]
|
|
18
|
+
bin.each_char do |i|
|
|
19
|
+
b = (b**2)%@n
|
|
20
|
+
b = b*2 if bin[i] == "1"
|
|
21
|
+
end
|
|
22
|
+
b == 1
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# http://www.mersenneforum.org/showpost.php?p=388342&postcount=1
|
|
26
|
+
def fu_test?
|
|
27
|
+
a = minimal_strong_jacobi
|
|
28
|
+
ap2 = a + 2
|
|
29
|
+
bin = (@n+1).to_s(2)[1..-1]
|
|
30
|
+
s,t = 1,2
|
|
31
|
+
bin.each_char do |i|
|
|
32
|
+
s,t = (s*(a*s+2*t))%@n,((t-s)*(t+s))%@n
|
|
33
|
+
s,t = ap2*s+t,2*t-s if bin[i] == "1"
|
|
34
|
+
end
|
|
35
|
+
s == 0 && t == (2*a+5)%@n
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# http://primes.utm.edu/glossary/xpage/JacobiSymbol.html
|
|
39
|
+
def minimal_strong_jacobi
|
|
40
|
+
return 0 if @n%4 == 3
|
|
41
|
+
return 1 if @n%6 == 5
|
|
42
|
+
a = 2
|
|
43
|
+
n = 0
|
|
44
|
+
j = 0
|
|
45
|
+
while n != 1 || j != -1
|
|
46
|
+
a += 1
|
|
47
|
+
d = a**2 - 4
|
|
48
|
+
n = @n
|
|
49
|
+
j = 1
|
|
50
|
+
while !d.zero?
|
|
51
|
+
while d.even?
|
|
52
|
+
d /= 2
|
|
53
|
+
j = -j if n%8 == 3 || n%8 == 5
|
|
54
|
+
end
|
|
55
|
+
d,n = n,d
|
|
56
|
+
j = -j if d%4 == 3 && n%4 == 3
|
|
57
|
+
d %= n
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
a
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Binary_numeral_system_.28base_2.29
|
|
64
|
+
def square?
|
|
65
|
+
return false if @n%4 == 3
|
|
66
|
+
num = @n
|
|
67
|
+
res = 0
|
|
68
|
+
bit = 1
|
|
69
|
+
bit <<= 2 while bit <= num
|
|
70
|
+
while bit != 0
|
|
71
|
+
if num >= res + bit
|
|
72
|
+
num -= res + bit
|
|
73
|
+
res = (res >> 1) + bit
|
|
74
|
+
else
|
|
75
|
+
res >>= 1
|
|
76
|
+
end
|
|
77
|
+
bit >>= 2
|
|
78
|
+
end
|
|
79
|
+
@n == res**2
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def value
|
|
83
|
+
@n
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def initialize(str_n)
|
|
87
|
+
@n = str_n.gsub(/(\D|\s)/,'').to_i
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
class MyClass #(change name)
|
|
92
|
+
|
|
93
|
+
include GladeGUI
|
|
94
|
+
|
|
95
|
+
def before_show()
|
|
96
|
+
@button1 = "Run PRP Test"
|
|
97
|
+
@do_prp2 = false
|
|
98
|
+
@do_tf = false
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def on_checkbutton1_toggled(*args)
|
|
102
|
+
@do_tf ? @do_tf = false : @do_tf = true
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def on_checkbutton2_toggled(*args)
|
|
106
|
+
@do_prp2 ? @do_prp2 = false : @do_prp2 = true
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def on_button1_clicked(*args)
|
|
110
|
+
n = Prp.new(@builder["entry1"].text)
|
|
111
|
+
if @do_tf
|
|
112
|
+
factor = n.tf
|
|
113
|
+
if factor > 1
|
|
114
|
+
@builder["label1"].label = "Has small factor, " + factor.to_s
|
|
115
|
+
return
|
|
116
|
+
elsif factor == 1
|
|
117
|
+
@builder["label1"].label = " Is prime!"
|
|
118
|
+
return
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
if n.value.zero?
|
|
122
|
+
@builder["label1"].label = "0 is zero."
|
|
123
|
+
return
|
|
124
|
+
elsif n.value == 1
|
|
125
|
+
@builder["label1"].label = "1 is a unit."
|
|
126
|
+
return
|
|
127
|
+
elsif n.value == 2
|
|
128
|
+
@builder["label1"].label = "2 is prime!"
|
|
129
|
+
return
|
|
130
|
+
elsif n.value.even?
|
|
131
|
+
@builder["label1"].label = "n is even."
|
|
132
|
+
return
|
|
133
|
+
elsif n.square?
|
|
134
|
+
@builder["label1"].label = "n is a square."
|
|
135
|
+
return
|
|
136
|
+
end
|
|
137
|
+
answer = ""
|
|
138
|
+
prp = true
|
|
139
|
+
if @do_prp2
|
|
140
|
+
if n.prp2?
|
|
141
|
+
answer += " Passed 2^(n-1)==1 (mod n)."
|
|
142
|
+
else
|
|
143
|
+
answer += " Failed 2^(n-1)==1 (mod n)."
|
|
144
|
+
prp = false
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
if prp
|
|
148
|
+
if n.fu_test?
|
|
149
|
+
answer += " Passed the main test."
|
|
150
|
+
else
|
|
151
|
+
answer += " Failed the main test."
|
|
152
|
+
prp = false
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
prp ? answer += " Is likely prime!" : answer += " Is composite :("
|
|
156
|
+
@builder["label1"].label = answer
|
|
157
|
+
@builder["entry1"].text = n.value.to_s
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
end
|
|
161
|
+
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<interface>
|
|
3
|
+
<!-- interface-requires gtk+ 3.0 -->
|
|
4
|
+
<!-- interface-naming-policy toplevel-contextual -->
|
|
5
|
+
<object class="GtkWindow" id="window1">
|
|
6
|
+
<property name="visible">True</property>
|
|
7
|
+
<property name="can_focus">False</property>
|
|
8
|
+
<property name="title" translatable="yes">Frobenius Underwood PRP Test</property>
|
|
9
|
+
<property name="modal">True</property>
|
|
10
|
+
<property name="window_position">center-always</property>
|
|
11
|
+
<property name="default_width">300</property>
|
|
12
|
+
<property name="default_height">200</property>
|
|
13
|
+
<signal name="destroy" handler="destroy_window" swapped="no"/>
|
|
14
|
+
<child>
|
|
15
|
+
<object class="GtkFixed" id="fixed1">
|
|
16
|
+
<property name="width_request">1100</property>
|
|
17
|
+
<property name="height_request">450</property>
|
|
18
|
+
<property name="visible">True</property>
|
|
19
|
+
<property name="can_focus">False</property>
|
|
20
|
+
<child>
|
|
21
|
+
<object class="GtkEntry" id="entry1">
|
|
22
|
+
<property name="width_request">1000</property>
|
|
23
|
+
<property name="height_request">72</property>
|
|
24
|
+
<property name="visible">True</property>
|
|
25
|
+
<property name="can_focus">True</property>
|
|
26
|
+
<property name="tooltip_text" translatable="yes">Enter an integer. Non-numerals will be removed.</property>
|
|
27
|
+
<property name="max_length">65535</property>
|
|
28
|
+
<property name="invisible_char">●</property>
|
|
29
|
+
<property name="primary_icon_activatable">False</property>
|
|
30
|
+
<property name="secondary_icon_activatable">False</property>
|
|
31
|
+
<property name="primary_icon_sensitive">True</property>
|
|
32
|
+
<property name="secondary_icon_sensitive">True</property>
|
|
33
|
+
</object>
|
|
34
|
+
<packing>
|
|
35
|
+
<property name="x">45</property>
|
|
36
|
+
<property name="y">124</property>
|
|
37
|
+
</packing>
|
|
38
|
+
</child>
|
|
39
|
+
<child>
|
|
40
|
+
<object class="GtkLabel" id="label1">
|
|
41
|
+
<property name="width_request">900</property>
|
|
42
|
+
<property name="height_request">80</property>
|
|
43
|
+
<property name="visible">True</property>
|
|
44
|
+
<property name="can_focus">False</property>
|
|
45
|
+
<property name="label" translatable="yes">Enter a candidate number above.</property>
|
|
46
|
+
</object>
|
|
47
|
+
<packing>
|
|
48
|
+
<property name="x">100</property>
|
|
49
|
+
<property name="y">209</property>
|
|
50
|
+
</packing>
|
|
51
|
+
</child>
|
|
52
|
+
<child>
|
|
53
|
+
<object class="GtkCheckButton" id="checkbutton1">
|
|
54
|
+
<property name="label" translatable="yes">Trial Factor</property>
|
|
55
|
+
<property name="width_request">176</property>
|
|
56
|
+
<property name="height_request">80</property>
|
|
57
|
+
<property name="visible">True</property>
|
|
58
|
+
<property name="can_focus">True</property>
|
|
59
|
+
<property name="receives_default">False</property>
|
|
60
|
+
<property name="draw_indicator">True</property>
|
|
61
|
+
<signal name="toggled" handler="on_checkbutton1_toggled" swapped="no"/>
|
|
62
|
+
</object>
|
|
63
|
+
<packing>
|
|
64
|
+
<property name="x">130</property>
|
|
65
|
+
<property name="y">300</property>
|
|
66
|
+
</packing>
|
|
67
|
+
</child>
|
|
68
|
+
<child>
|
|
69
|
+
<object class="GtkCheckButton" id="checkbutton2">
|
|
70
|
+
<property name="label" translatable="yes">Check 2^(n-1)==1 (mod n)</property>
|
|
71
|
+
<property name="width_request">350</property>
|
|
72
|
+
<property name="height_request">80</property>
|
|
73
|
+
<property name="visible">True</property>
|
|
74
|
+
<property name="can_focus">True</property>
|
|
75
|
+
<property name="receives_default">False</property>
|
|
76
|
+
<property name="draw_indicator">True</property>
|
|
77
|
+
<signal name="toggled" handler="on_checkbutton2_toggled" swapped="no"/>
|
|
78
|
+
</object>
|
|
79
|
+
<packing>
|
|
80
|
+
<property name="x">330</property>
|
|
81
|
+
<property name="y">300</property>
|
|
82
|
+
</packing>
|
|
83
|
+
</child>
|
|
84
|
+
<child>
|
|
85
|
+
<object class="GtkButton" id="button1">
|
|
86
|
+
<property name="label" translatable="yes">Run PRP Test</property>
|
|
87
|
+
<property name="width_request">200</property>
|
|
88
|
+
<property name="height_request">80</property>
|
|
89
|
+
<property name="visible">True</property>
|
|
90
|
+
<property name="can_focus">True</property>
|
|
91
|
+
<property name="receives_default">True</property>
|
|
92
|
+
<signal name="clicked" handler="on_button1_clicked" swapped="no"/>
|
|
93
|
+
</object>
|
|
94
|
+
<packing>
|
|
95
|
+
<property name="x">744</property>
|
|
96
|
+
<property name="y">300</property>
|
|
97
|
+
</packing>
|
|
98
|
+
</child>
|
|
99
|
+
<child>
|
|
100
|
+
<object class="GtkLabel" id="label2">
|
|
101
|
+
<property name="width_request">945</property>
|
|
102
|
+
<property name="height_request">80</property>
|
|
103
|
+
<property name="visible">True</property>
|
|
104
|
+
<property name="can_focus">False</property>
|
|
105
|
+
<property name="label" translatable="yes">Tests: x^(n+1)==2*a+5 (mod n, x^2-a*x+1), min a>=0: jacobi(a^2-4,n)==-1</property>
|
|
106
|
+
</object>
|
|
107
|
+
<packing>
|
|
108
|
+
<property name="x">77</property>
|
|
109
|
+
<property name="y">20</property>
|
|
110
|
+
</packing>
|
|
111
|
+
</child>
|
|
112
|
+
</object>
|
|
113
|
+
</child>
|
|
114
|
+
</object>
|
|
115
|
+
</interface>
|
data/fu_prp.rb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
|
|
3
|
+
require 'vrlib'
|
|
4
|
+
|
|
5
|
+
#make program output in real time so errors visible in VR.
|
|
6
|
+
STDOUT.sync = true
|
|
7
|
+
STDERR.sync = true
|
|
8
|
+
|
|
9
|
+
#everything in these directories will be included
|
|
10
|
+
my_path = File.expand_path(File.dirname(__FILE__))
|
|
11
|
+
require_all Dir.glob(my_path + "/bin/**/*.rb")
|
|
12
|
+
|
|
13
|
+
MyClass.new.show
|
|
14
|
+
|
metadata
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: fu_prp
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Your Name
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir:
|
|
10
|
+
- "."
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2015-03-20 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: vrlib
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - ">="
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: 0.0.1
|
|
21
|
+
type: :runtime
|
|
22
|
+
prerelease: false
|
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
24
|
+
requirements:
|
|
25
|
+
- - ">="
|
|
26
|
+
- !ruby/object:Gem::Version
|
|
27
|
+
version: 0.0.1
|
|
28
|
+
- !ruby/object:Gem::Dependency
|
|
29
|
+
name: gtk2
|
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
|
31
|
+
requirements:
|
|
32
|
+
- - ">="
|
|
33
|
+
- !ruby/object:Gem::Version
|
|
34
|
+
version: 0.0.1
|
|
35
|
+
type: :runtime
|
|
36
|
+
prerelease: false
|
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - ">="
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: 0.0.1
|
|
42
|
+
- !ruby/object:Gem::Dependency
|
|
43
|
+
name: require_all
|
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - ">="
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: 0.0.1
|
|
49
|
+
type: :runtime
|
|
50
|
+
prerelease: false
|
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
52
|
+
requirements:
|
|
53
|
+
- - ">="
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: 0.0.1
|
|
56
|
+
description: A 2 selfridge test with optional 2-PRP test and trial division. Integer
|
|
57
|
+
input.
|
|
58
|
+
email: paulunderwood@mindlesl.com
|
|
59
|
+
executables:
|
|
60
|
+
- fu_prp.rb
|
|
61
|
+
extensions: []
|
|
62
|
+
extra_rdoc_files: []
|
|
63
|
+
files:
|
|
64
|
+
- "./fu_prp.rb"
|
|
65
|
+
- bin/MyClass.rb
|
|
66
|
+
- bin/glade/MyClass.glade
|
|
67
|
+
- fu_prp.rb
|
|
68
|
+
homepage: http://www.mersenneforum.org/showpost.php?p=388342&postcount=1
|
|
69
|
+
licenses: []
|
|
70
|
+
metadata: {}
|
|
71
|
+
post_install_message:
|
|
72
|
+
rdoc_options: []
|
|
73
|
+
require_paths:
|
|
74
|
+
- "."
|
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
|
+
requirements:
|
|
77
|
+
- - ">="
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: '0'
|
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
|
+
requirements:
|
|
82
|
+
- - ">="
|
|
83
|
+
- !ruby/object:Gem::Version
|
|
84
|
+
version: '0'
|
|
85
|
+
requirements: []
|
|
86
|
+
rubyforge_project: nowarning
|
|
87
|
+
rubygems_version: 2.4.5
|
|
88
|
+
signing_key:
|
|
89
|
+
specification_version: 4
|
|
90
|
+
summary: 2 Selfrdige PRP test.
|
|
91
|
+
test_files: []
|