Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
2188 views
1
def digits10(n):
2
return len(n.digits(10))
3
4
def digits2(n):
5
return len(n.digits(2))
6
7
def count_divisors(n):
8
return len(divisors(n))
9
10
def count_prime_divisors(n):
11
return len(factor(n))
12
13
def count_quadratic_residues(n):
14
return len(quadratic_residues(n))
15
16
def number(n):
17
return n
18
19
def goldbach(x):
20
assert x%2==0, "This function only works for even numbers"
21
count = 0
22
l = prime_range(2, x/2+1)
23
s = set(prime_range(x/2, x-1))
24
for i in l:
25
if x-i in s:
26
count+=1
27
return count
28
29
def mertens(x):
30
#see [Crandall - Pomerance, 2005], p.36
31
32
#The list comprehension code causes MemoryErrors when x is very large
33
#return sum([moebius(n) for n in range(1, floor(x+1))])
34
35
#The for loop code causes MemoryErrors when x is very large
36
#m = 0
37
#for n in range(1, floor(x+1)):
38
# m += moebius(n)
39
#return m
40
41
m, n = 0, 1
42
while n <= floor(x):
43
m += moebius(n)
44
n += 1
45
return m
46
47
def reciprocal_prime_sum(x):
48
return sum(1/p for p in prime_range(2, x+1))
49
50
def max_prime_divisor(x):
51
return max(p for p,_ in factor(x))
52
53
def prime_product(x):
54
prod = 1
55
for p in prime_range(2, x+1):
56
prod *= p
57
return prod
58
59
invariants = [goldbach,
60
('prime_pi',prime_pi),
61
('euler_phi', euler_phi),
62
number,
63
digits10,
64
digits2,
65
('sigma', sigma),
66
count_divisors,
67
next_prime,
68
previous_prime,
69
count_quadratic_residues,
70
mertens,
71
('li', li),
72
('zeta', zeta),
73
reciprocal_prime_sum,
74
max_prime_divisor,
75
prime_product]
76
77
def automatedSearch(objects, invariants, universe, upperBound=True, steps=10, mainInvariant=1):
78
for _ in range(steps):
79
l = conjecture(objects, invariants, mainInvariant, upperBound=upperBound)
80
print(l)
81
noCounterExample = True
82
for i in universe:
83
if any([not c.evaluate(Integer(i)) for c in l]):
84
print "Adding {}".format(i)
85
objects.append(i)
86
universe.remove(i)
87
noCounterExample = False
88
break
89
if noCounterExample:
90
print "No counterexample found"
91
break
92
return l
93
94
95