Автор:admin Дата: 29 сентября 2021 г.
def sum_of_digits(x): # сумма цифр числа # sod
s = 0
while x > 0:
d = x % 10
x = x // 10
s += d
return s
def sum_of_digits(x): # сумма цифр числа # sod
return sum(map(int,str(x)))
def p_of_digits(x): # произведение цифр числа
p = 1
while x > 0:
d = x % 10
x = x // 10
p *= d
return p
def is_prime(x): # возвращает истину, если число простое
for i in range(2,int(x**0.5)+1):
if x % i == 0:
return False
return True
def get_first_digit(x): # возвращает первую цифру числа
s = str(x)
d = s[0]
return int(d)
def count_n(x,n): # сколько раз встречается число n среди цифр числа
k = 0
while x > 0:
d = x % 10
x = x // 10
if d == n:
k += 1
return k
def count_n(x,n): # сколько раз встречается число n среди цифр числа
return str(x).count(str(n))
def get_max_digit(x): # возвращает максимальную цифру числа
m = 0
while x > 0:
d = x % 10
x = x // 10
if d > m:
m = d
return m
def get_max_digit(x): # возвращает максимальную цифру числа
s = str(x)
m = max(s)
return int(m)
def get_max_digit(x): # возвращает максимальную цифру числа
return int(max(str(x)))
def get_min_digit(x): # возвращает минимальную цифру числа
m = 9
while x > 0:
d = x % 10
x = x // 10
if d < m:
m = d
return m
def get_min_digit(x): # возвращает минимальную цифру числа
s = str(x)
m = min(s)
return int(m)
def get_min_digit(x): # возвращает минимальную цифру числа
return int(min(str(x)))
def get_first_digit(x): # возвращает минимальную цифру числа
m = 0
while x > 0:
d = x % 10
x = x // 10
return d
def get_first_digit(x): # возвращает минимальную цифру числа
s = str(x)
return int(s[0])
def get_first_digit(x): # возвращает минимальную цифру числа
return int(str(x)[0])
def s_in_n(x,n): # возвращает сумму цифр числа. Используется для проверки, является ли число x степенью n
s = 0
while x > 0:
d = x % n
x = x // n
s += d
return s
# пример использования: if s_in_n(125,5) == 1:
def k_in_n(x,n): # возвращает количество цифр числа в системе n
s = 0
while x > 0:
d = x % n
x = x // n
s += 1
return s
def is_uniq(x): # вернет истину, если нет одинаковых цифр в числе
s1 = str(x)
s2 = set(s1)
return len(s1) == len(s2)
def is_non_dec(x): # вернет истину, если цифры идут неубыванию (возрастают или равны) 123+ 122+ 121-
s1 = list(str(x))
s2 = list(str(x))
s2.sort()
return s1 == s2
def is_non_dec(x): # вернет истину, если цифры идут неубыванию (возрастают или равны) 123+ 122+ 121-
prev_d = x % 10
x = x // 10
while x > 0:
d = x % 10
x = x // 10
if d > prev_d:
return False
prev_d = d
return True
def is_inc(x): # вернет истину, если цифры идут строго по возрастанию (нужна функция is_uniq) 123+ 122- 121-
s1 = list(str(x))
s2 = list(str(x))
s2.sort()
return s1 == s2 and is_uniq(x)
def is_inc(x): # возвращает истину, если все цифры числа идут по возрастанию. Например 123+ 121- 122-
prev_d = x % 10
x = x // 10
while x > 0:
d = x % 10
x = x // 10
if d >= prev_d:
return False
prev_d = d
return True
# проверить, стоит ли минимальная цифра в первых трех позициях числа
s = str(x)
md = min(s)
if md in s[:3]:
...
# получить последнюю цифру числа в десятичной системе
d = x % 10
# получить последние две цифры числа в десятичной системе
d1 = x % 10
d10 = x // 10 % 10
# получить последние три цифры числа в десятичной системе (ниже показан способ проще и удобнее)
d1 = x % 10
d10 = x // 10 % 10
d100 = x // 100 % 10
# получить последнюю цифру числа в системе n
d = x % n
# получить последние две цифры числа в системе n (для ознакомления, не стоит использовать)
d1 = x % n
d10 = x // n % n
# получить последние три цифры числа в системе n (для ознакомления, не стоит использовать)
d1 = x % n
d10 = x // n % n
d100 = x // n**2 % n
# проверить, оканчивается ли число в пятеричной системе на 3
x5 = ten_to_n(x, 5)
if x5[-1] == '3':
# проверить, оканчивается ли число в пятеричной системе на 01
x5 = ten_to_n(x, 5)
if x5[-2:] == '01':
# если количество цифр в пятеричной системе не менее 6:
x5 = ten_to_n(x, 5)
if len(x5) >= 6:
# проверить, оканчивается ли число на 25 в десятичной системе
if x % 100 == 25
# проверить, оканчивается ли число на 01 в десятичной системе
x10 = ten_to_n(x, 10)
if x10[-2:] == '01':
# проверить, начинается ли число на 10 в десятичной системе
x10 = ten_to_n(x, 10)
if x10[:2] == '10':
# проверить, начинается ли число на 10 в пятеричной системе
x5 = ten_to_n(x, 5)
if x5[:2] == '10':
def get_all_divs(x): # возвращает все делители числа
divs = []
for d in range(1, int(x**0.5)+1):
if x % d == 0:
if d * d == x:
divs.append(d)
else:
divs.append(d)
divs.append(x // d)
return divs
def get_self_divs(x): # возвращает собственные делители числа (все, кроме самого числа)
divs = [1]
for d in range(2, int(x**0.5)+1):
if x % d == 0:
if d * d == x:
divs.append(d)
else:
divs.append(d)
divs.append(x // d)
return divs
def get_n_divs(x): # возвращает нетривиальные делители числа (все, кроме 1 и самого числа)
divs = []
for d in range(2, int(x**0.5)+1):
if x % d == 0:
if d * d == x:
divs.append(d)
else:
divs.append(d)
divs.append(x // d)
return divs
def get_all_divs(x): # возвращает все делители числа
divs = []
for d in range(1, int(x**0.5)+1):
if x % d == 0:
if d * d == x:
divs.append(d)
else:
divs.append(d)
divs.append(x // d)
return divs
def get_even_divs(x): # возвращает все четные делители числа (лучше делать через получение всех делителей)
divs = []
for d in range(1, int(x**0.5)+1):
if x % d == 0:
if d * d == x:
if d % 2 == 0:
divs.append(d)
else:
if d % 2 == 0:
divs.append(d)
if x // d % 2 == 0:
divs.append(x // d)
return divs
# Для получения четных и нечетных делителей можно сделать так:
dd = get_all_divs(x) # получить все делители
dd1 = [] # список нечетных делителей
dd2 = [] # список четных делилетелей
for d in dd:
if d % 2 == 0:
dd2.append(d)
else:
dd1.append(d)
dd = get_all_divs(x)
k = len(dd) # количество делителей
s = sum(dd) # сумма делителей
md = max(dd) # максимальный делитель
#Для получения двух самых больших делителей в порядке убывания:
dd = get_all_divs(x)
dd.sort(reverse=1)
print(dd[:2])
def get_prime_divs(x): # возвращает только простые делители числа
divs = []
for d in range(1, int(x**0.5)+1):
if x % d == 0:
if d * d == x:
if is_prime(d):
divs.append(d)
else:
if is_prime(d):
divs.append(d)
if is_prime(x // d):
divs.append(x // d)
return divs
def get_prime_divs(x): # возвращает только двузначные делители числа
divs = []
for d in range(10,100):
if x % d == 0:
divs.append(d)
return divs
def get_two_diff_prime_divs(x): # возвращает два различных простых делителя или None (по сути - два простых множетеля)
for d in range(2,int(x**0.5)+1):
if x % d == 0:
if d != x // d:
if is_prime(d) and is_prime(x // d):
return d, x // d
def get_three_diff_prime_divs(x): # возвращает три различных простых делителя или None (по сути - три простых множетеля). Использует get_two_diff_prime_divs
for d in range(2,int(x**0.5)+1):
if x % d == 0:
if is_prime(d):
dd = get_two_diff_prime_divs(x // d)
if dd:
if d != dd[0] and d != dd[1]:
return d, dd[0], dd[1]
def f(): # перебрать все разности сомножителей (имеет смысл писать без функции, прямо в коде)
for d in range(1, int(x**0.5)+1):
if x % d == 0:
rz = x // d - d # это очередное значение разности сомножетелей
def ten_to_n(x,n): # перевод из любой системы (основание не больше 10) в десятичную
res = ''
while x > 0:
d = x % n
x = x // n
res = str(d) + res
return res
def ten_to_n(x,n): # перевод из любой системы (основание не больше 18) в десятичную
digits = '0123456789ABCDEFGH'
res = ''
while x > 0:
d = x % n
x = x // n
res = digits[d] + res
return res
def n_to_ten(x,n): # перевод из десятичной в любую (основание не больше 18)
digits = '0123456789ABCDEFGH'
res = 0
t = len(x)-1
for d in x:
res += digits.index(d) * n**t
t -= 1
return res
int(x, n) # перевод из десятичной в любую