Пример #1
0
Файл: p37.py Проект: fazz/soft
def fromright(i):
	i /= 10
	while i:
		if not tools.isprime(i):
			return False
		i /= 10
	return True
Пример #2
0
Файл: p37.py Проект: fazz/soft
def fromleft(i):
	d = 10**int(math.log(i,10))
	i %= d
	while True:
		if not tools.isprime(i):
			return False
		if i < 10:
			break
		d /= 10
		i %= d
	return True
Пример #3
0
Файл: p70.py Проект: fazz/soft
def totient_(n):
	if tools.isprime(n):
		return n-1
	
	(f, c) = tools.primefactorization(primes, n, 1000000)

	p = n
	for f1 in f:
		p *= (f1-1.0)/f1

	p = int(p)

	return p
Пример #4
0
Файл: p60.py Проект: fazz/soft
def combines(a):
	ret = True
	for i in a:
		for j in a:
			if i == j:
				continue
			if not tools.isprime(i*10**(len(str(j)))+j):
				ret = False
				break

		if not ret:
			break

	return ret
Пример #5
0
Файл: p72.py Проект: fazz/soft
def totient_(n):
	if tools.isprime(n):
		return n-1
	
	(f, c) = tools.primefactorization(primes, n, 1000000)

	fc = 0
	for i in range(len(f)):
		fc += f[i]*c[i]
#	print "fc:", fc, len(f), f, c

	p = n
	for f1 in f:
		p /= f1
		p *= f1-1

	return p
Пример #6
0
Файл: p95.py Проект: fazz/soft
	return sumofdivisors-input

tools.genprimes(primes, 1000000)

print sumofproperdivisors(589786)
print tools.primefactorization(primes, 589786, 1000000)

longestchain = 0
minmember = 0
ignore = set()

print 'start'
for i in range(4, 1000000):
	if not i%200:
		print "i:", i, len(ignore), longestchain, minmember
	if tools.isprime(i):
		continue
	if i in ignore:
		continue

	pdsum = sumofproperdivisors(i)
	chainstart = i
	chainlen = 2
	chain = set()
	curchain = []
	curchain.append(chainstart)

	while True:
		if pdsum <= i:
			chainlen = 0
			break
Пример #7
0
Файл: p75.py Проект: fazz/soft
for m in range(2, 867):
	for n in range(1, m):
		if m%2 == n%2:
			continue
		if tools.gcd(m, n) == 1:
			p += 1
			x = 2*m*(m+n)
			if x in ps:
				ds.add(x)
			ps.add(x)
			
while i <= limit:
	
	j = i/2

	if tools.isprime(j):
		i += 2
		continue

	(f, c) = tools.primefactorization(primes, j, 1000000)
	if len(f) < 2:
		i += 2
		continue

	if f[0] == 2:
		c[0] += 1
	else:
		f.append(2)
		c.append(1)

	# P = z * 2 * m * (m + n)
Пример #8
0
from tools import isprime
s = 0

for i in range(2000000):
	if isprime(i):
		s += i
		
print(s)
Пример #9
0
Файл: p35.py Проект: fazz/soft
	if z == 0:
		z = l
	else:
		z += l*(10**len(str(z)))
	return z

used = set()

for p in primes:
	if p >= 1000000:
		continue
	if p in used:
		continue

	curchain = []
	z = p
	for i in range(0, len(str(p))):
		curchain.append(z)
		z = rotate(z)
		if z == p:
			break
		if not tools.isprime(z):
			break

	if z == p:
		for x in curchain:
			used.add(x)

print len(used)
print used
Пример #10
0
Файл: p50.py Проект: fazz/soft
tools.genprimes(primes, 1000000)

maxsum = 0
maxlen = 0

for i in range(len(primes)):
    if primes[i] >= 1000000:
        break
    cursum = 0
    curlen = 0

    j = i
    cursum = 0
    while True:
        cursum += primes[j]
        if cursum >= 1000000:
            break
        if not cursum % 2:
            j += 1
            continue
        if tools.isprime(cursum):
            if j - i + 1 > maxlen:
                maxlen = j - i + 1
                maxsum = cursum

        j += 1


print maxsum
Пример #11
0
from tools import isprime

print(isprime(1333333))
Пример #12
0
Файл: p46.py Проект: fazz/soft
import math
import tools
primes=[]
tools.loadprimes(primes, 1000000)

n = 9

result = 0
while True:
	for p in primes:
		if p > n-2:
			result = n
			break
	
		sq = (n - p)/2
		rj = int(math.sqrt(sq))
		if rj*rj == sq:
			break

	n += 2
	while tools.isprime(n):
		n += 2

	if result:
		break

print result

Пример #13
0
Файл: p27.py Проект: fazz/soft
import tools

maxn = 0
maxa = 0
maxb = 0

for b in range(-1000, 1001):
	if not tools.isprime(abs(b)):
		continue
	for a in range(-1000, 1001):
		if not a%2:
			continue
		n = 0
		while True:
			x = n*n + a*n + b
#print b, a, n, x
			if tools.isprime(abs(x)):
				if n > maxn:
					maxn = n
					maxa = a
					maxb = b
			else:
				break
			n += 1

print maxa*maxb

Пример #14
0
Файл: p293.py Проект: fazz/soft
limit = 1000000000

def genadmissible(number, pos, result):
	while True:
		number = number*primes[pos]
		if number >= limit:
			return
		result.append(number)
		print tools.primefactorization(primes, number, 32000)
		genadmissible(number, pos+1, result)

admissible = []

genadmissible(1, 0, admissible)

print admissible, len(admissible)

result = set()
for n in admissible:
	i = 3
	while True:
		if tools.isprime(n+i):
			result.add(i)
			break
		i = i+2

print sum(result)


Пример #15
0
Файл: p58.py Проект: fazz/soft
import tools

#output = [1, 3, 5, 7, 9]

i = 5
lasttr = 3

totalcount = 5
primecount = 3

while True:
	totalcount += 4

	tr = lasttr + 3*(i-3) + i - 1
	if tools.isprime(tr):
		primecount += 1
	if tools.isprime(tr + (i-1)):
		primecount += 1
	if tools.isprime(tr + 2*(i-1)):
		primecount += 1
	if tools.isprime(tr + 3*(i-1)):
		primecount += 1

	if primecount*1.0/totalcount < 0.1:
		break

	lasttr = tr
	i += 2

print i