МНОЖЕСТВА:
from itertools import combinations
p = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
q = {3, 6, 9, 12, 15, 18, 21, 24, 27, 30}
r = []
def f(x):
P = x in p
Q = x in q
A = x in a
return (A <= P) and ((not Q) <= (not A))
for i in range(1, 11):
for a in combinations(p, i):
if all(f(x) for x in p):
r.append(len(a))
print(max(r))
НЕ МНОЖЕСТВА И НЕ ОТРЕЗКИ:
for a in range(1, 10000):
if all((x & 52 != 0 and x & 48 == 0) <= (not x & a == 0) for x in range(1, 1000)):
print(a)
break
ОТРЕЗКИ
def f(x):
P = 15 <= x <= 142
Q = 38 <= x <= 167
A = a1 <= x <= a2
return not(Q <= (((not A) and P) <= (not Q)))
r = []
d = [y for x in (15, 38, 142, 167) for y in (x, x-0.01, x+0.01)]
for a1 in d:
for a2 in d:
if a2 > a1 and all(not f(x) for x in d):
r.append(a2-a1)
print(min(r))
вот так определяем простоту числа:
def p(x): return x > 1 and all(x % d for d in range(2, int(x**0.5) + 1))
вот так все делители:
def d(x):
d = []
for i in range(1, int(x**0.5) + 1):
if x % i == 0:
d.append(i)
d.append(x // i)
return d
вот так ищем простые делители:
def p(x): return x > 1 and all(x % d for d in range(2, int(x**0.5) + 1))
def d(x):
d = set()
for i in range(2, int(x**0.5) + 1):
if x % i == 0:
if p(i): d.add(i)
if p(x // i): d.add(x // i)
return d
вот так простые множители:
def d(x):
d = []
i = 2
while i * i <= x:
while x % i == 0:
d.append(i)
x //= i
i += 1
if x > 1: d.append(x)
return d
маски:
from fnmatch import fnmatch
for x in range(7993, 10**10 + 1, 7993):
if fnmatch(str(x), '4*4736*1'):
print(x, x // 7993)
множители:
def f(x):
d = []
i = 2
while i * i <= x:
while x % i == 0:
d.append(i)
x //= i
i += 1
if x > 1: d.append(x)
return d
x, k = 7305679, 0
while k < 5:
m = f(x)
if len(m) == 4 and str(sum(m)) == str(sum(m))[::-1]:
print(x, sum(m))
k += 1
x += 1
делители:
def f(x):
d = set()
for i in range(1, int(x**0.5) + 1):
if x % i == 0:
d.add(i)
d.add(x // i)
return d
x, k = 178965, 0
while k < 4:
m = f(x)
if len(m) == 4:
print(*sorted(m, reverse=True))
k += 1
x += 1
27:
from math import dist
filea = open('27A_27593.txt')
data = []
clusters = []
for line in filea:
x, y = [float(k) for k in line.replace(',', '.').split()]
data.append([x, y])
while data:
clusters.append([data.pop(0)])
for p in clusters[-1]:
near = [p1 for p1 in data if dist(p, p1) < 1]
clusters[-1].extend(near)
for j in near: data.remove(j)
print(*[len(cl) for cl in clusters])
def centroid(cl):
m = []
for p in cl:
sm = sum(dist(p, p1) for p1 in cl)
m.append([sm, p])
return min(m)[1]
centroids = [centroid(cl) for cl in clusters]
print(centroids)