Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [316312; 451234] числа, у которых произведение нетривиальных делителей кратна 14. В ответ укажите количество таких чисел и через пробел сумму цифр максимального произведения нетривиальных делителей подходящего числа.
import math def divs(x): d = set() for i in range(2, int(x ** 0.5) + 1): if x % i == 0: d |= {i, x // i} return sorted(d) ans = [] for x in range(316312, 451235): m = divs(x) if len(m) > 0: d = math.prod(m) # воспользуемся модулем math и функцией prod, # которая вычисляет произведение всех элементов списка if d % 14 == 0: ans += [d] print(len(ans),sum(map(int,str(max(ans)))))
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [414400; 561293] числа, у которых сумма нетривиальных делителей больше числа и при этом не кратна 6. В ответ укажите количество таких чисел и через пробел максимальную сумму цифр подходящего числа.
def divs(x): d = set() for i in range(2,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) count = 0 mx_sm = 0 for x in range(414_400,561_294): d = sum(divs(x)) if d > x and d % 6 != 0: count += 1 mx_sm = max(mx_sm,sum(map(int,str(x)))) print(count,mx_sm)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая выведет 5 наименьших чисел, больших 800000 у которых ровно сумма нечётных нетривиальных делителей чётна, а сумма чётных нетривиальных делителей оканчивается на 4. Для каждого числа укажите через пробел количество делителей.
def divs(x): d = set() for i in range(2,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) count = 0 for x in range(800_001,10**6): d = divs(x) odd = [x for x in d if x % 2 != 0] even = [x for x in d if x % 2 == 0] if sum(odd) % 2 == 0 and sum(even) % 10 == 4: print(x,len(d)) count += 1 if count > 4: break
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [612376; 875324] числа, у которых ровно 5 простых делителей. В ответ укажите количество нечётных чисел среди таких чисел и через пробел сумму цифр подходящих чисел.
def simple(x): return x > 1 and all(x % y for y in range(2,int(x**0.5)+1)) def divs(x): d = set() for i in range(1,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) ans = [] sm = 0 for x in range(612376,875325): d = [i for i in divs(x) if simple(i)] if len(d) == 5: if x % 2 != 0: ans += [x] sm += sum(map(int,str(x))) print(len(ans),sm)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [412412; 535242] числа, у которых сумма нетривиальных делителей кратна 184 и сумма цифр суммы нетривиальных делителей является простым числом. В ответ укажите количество таких чисел и через пробел минимальное число, большее 500000.
def simple(x):return x > 1 and all(x % y for y in range(2,int(x**0.5)+1)) def divs(x): d = set() for i in range(2,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) ans = [] for x in range(412412,535242): d = sum(divs(x)) if d % 184 == 0 and simple(sum(map(int,str(d)))): ans += [x] print(len(ans),min(x for x in ans if x > 500000))
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [503123; 533211] числа, у которых сумма и количество простых делителей является простым числом. В ответ укажите количество таких чисел и через пробел разность максимального и минимального числа.
def simple(x):return x > 1 and all(x % y for y in range(2,int(x**0.5)+1)) def divs(x): d = set() for i in range(1,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) ans = [] for x in range(503123,533212): d = [i for i in divs(x) if simple(i)] if simple(len(d)) and simple(sum(d)): ans += [x] print(len(ans), max(ans)-min(ans)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [312322; 486711] числа, у которых количество чётных делителей равно количеству нечётных делителей и при этом сумма делителей является нечётной. В ответ укажите количество таких чисел.
def divs(x): d = set() for i in range(1,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) ans = [] for x in range(312322,486712): d = divs(x) odd = [x for x in d if x % 2 != 0] even = [x for x in d if x % 2 == 0] if len(even) == len(odd) and sum(d) % 2 != 0: ans += [x] print(len(ans))
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [153749; 251674] числа, у которых есть ровно 6 делителей, оканчивающихся на одну и ту же цифру. В ответ укажите количество таких чисел и через пробел целую часть среднего арифметического таких чисел.
def divs(x): d = set() for i in range(1,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) ans = [] for x in range(153749,251675): sm = [[] for i in range(10)]#двумерный список, в котором мы будем хранить делитель в определённых ячейках, #в зависимости от их последней цифры d = divs(x) if len(d) >= 6: for div in d:#проход по делителям числа sm[div % 10].append(div)#распределяем делители в различные списки в зависимости от их последней цифры for i in sm:#проход по группам делителей, оканчивающихся на одну и ту же цифру if len(i) == 6:#если количество делителей равно 6 ans += [x]#то добавляем число break #вывод количества чисел и среднего арифметического таких чисел print(len(ans),sum(ans)/len(ans))
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [15374; 55166] пары чисел с одинаковой суммой цифр чисел и одинаковой суммой чисел их делителей. В ответ запишите количество таких пар и через пробел значение суммы цифр чисел, с которой больше всего встречается таких пар.
def divs(x): d = set() for i in range(1,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) d = [[] for i in range(55)]#двумерный массив, # в котором мы будем хранить суммы делителей чисел в определенной ячейке, # исходя из суммы цифр самого числа for x in range(15374,55167): sm = sum(map(int,str(x)))#считаем сумму цифр числа sum_divs = sum(divs(x))#считаем сумму делителей числа d[sm].append(sum_divs)#складываем в определенную ячейку сумму делителей count = {x:0 for x in range(55)}#словарь, у которого в качестве ключа числа от 0 до 55, #в качестве значения будет количество подходящих пар. #пример, 13:5 - это означает, что есть 5 пар среди чисел, у которых сумма цифр равна 13 for i in range(len(d)):#проход по двумерному списку if len(d[i]) > 1:#если возможно составить пару for j in range(len(d[i])-1):#перебираем всевозможные пары в списке for k in range(j+1,len(d[i])): if d[i][j] == d[i][k]:#если суммы делителей равны count[i] += 1#то увеличиваем счётчик под индексом i, # который обозначает чему равна сумма цифр чисел в этом списке #вывод количества таких пар и значения суммы цифр, для которой собралось больше всего таких пар print(sum(count.values()),*[x for x in count.keys() if count[x] == max(count.values())])
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [8077; 331323] cуперсовершенные числа. В ответ укажите количество таких чисел и через пробел сумму таких чисел. Суперсовершенные числа - это числа, чья сумма делителей числа суммы делителей самого числа вдвое больше изначального числа. Примеры: число 16 - его сумма делителей равна 31, сумма делителей числа 31 равна 32 - число 32 в два раза больше числа 16; число 4 - его сумма делителей равна 7, сумма делителей числа 7 равна 8 - число 8 в два раза больше числа 4.
def divs(x): d = set() for i in range(1,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) ans = [] for x in range(8077,331323+1): d = sum(divs(x)) if sum(divs(d)) / 2 == x: ans += [x] print(len(ans),sum(ans))
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [100; 100000], пары дружественных чисел. В ответ укажите количество таких пар и через пробел минимальную чётную сумму такой пары. Дружественные числа — это два различных натуральных числа, для которых сумма всех собственных делителей (исключая в качестве делителя само число) первого числа равна второму числу и наоборот, сумма всех собственных делителей (исключая в качестве делителя само число) второго числа равна первому числу. Пример, числа 220 и 284. У числа 220 делителями являются числа: 1,2,5,10,11,20,22,44,55,110 их сумма равна 284. У числа 284 делителями являются числа: 1,2,4,71,142 их сумма равна 220.
def divs(x):#функция поиска делителей определенного числа d = {1}#изначально включаем единицу for i in range(2,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) L = 100#левая граница отрезка M = 100001#правая граница отрезка d = {x:sum(divs(x)) for x in range(L,M)} #словарь, в котором в качестве ключа будет число из промежутка, # а в качестве значения будет сумма делителей (за исключением самого числа) данного числа # для оптимизации в словаре мы будем оставлять только те числа, # чья сумма делителей находится в пределах нашего отрезка count = [] mn = 10**20 for key in d.keys():#проходимся по всевозможным числам из отрезка if key == d.get(d[key]) and d[key] != key:#если первое число равно сумме делителей второго числа, #и при этом сумма делителей первого числа не равна первому числу if sorted([key,d[key]]) not in count:#тогда проверяем, #что если ранее такая пара чисел не была в списке #P.S. d[key] - значение суммы делителей числа key это не только сумма делителей, # но и также второе число пары дружественных чисел count.append([key,d[key]])#то добавляем print(len(count),min(sum(x) for x in count if sum(x) % 2 == 0)) #вывод количества таких пар и минимальной чётной суммы таких пар
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [3,30001], числа, имеющие ровно 6 различных делителей, не считая единицы и самого числа, при этом каждый из делителей должен быть кратен 2 или 3. В ответе запишите количество таких чисел.
def f(n): s = [] for i in range (2,int(n**0.5)+1): if n % i == 0 and i*i != n: s.append(i) s.append(n//i) elif i*i == n: s.append(i) return s count = 0 for i in range(3,30001): a = f(i) if len(a) == 6: for x in a: if x % 3 != 0 and x % 2 != 0: break else: count += 1 print(i, a) print(count)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [90000,147000], числа, имеющие ровно 4 различных делителя: два четных и два нечетных, не считая единицы и самого числа. В ответе запишите: количество таких чисел и их сумму без пробела.
def f(n): s = [] for i in range (2,int(n**0.5)+1): if n % i == 0 and i*i != n: s.append(i) s.append(n//i) elif i*i == n: s.append(i) return s count = 0 summa = 0 for i in range(90000,147001): a = f(i) chet = 0 nechet = 0 if len(a) == 4: for x in a: if x % 2== 0: chet += 1 else: nechet += 1 if chet == 2 and nechet == 2: count += 1 summa += i print(count, summa)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [135604,478001] и кратных 7, числа, имеющие ровно 14 различных натуральных делителя. В ответе запишите эти числа в порядке возрастания без пробелов.
def f(n): s = 0 for i in range (1,int(n**0.5)+1): if n % i == 0 and i*i != n: s += 2 elif i*i == n: s += 1 return s for i in range(135604,478002,7): if f(i) == 14: print(i)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [45000; 80000], числа, имеющие ровно 4 различных натуральных делителя, не считая единицы и самого числа. В ответе запишите сначала количество таких чисел, а затем максимальное из таких чисел без пробелов.
def f(n): s = 0 for i in range (2,int(n**0.5)+1): if n % i == 0 and i*i != n: s += 2 elif i*i == n: s += 1 return s count = 0 maxi = 0 for i in range(45000,80001): if f(i) == 4: count += 1 maxi = i print(count, maxi)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [540000; 1000000], числа, имеющие ровно 5 различных натуральных делителя. В ответе запишите эти числа в порядке не возрастания без пробелов.
def f(n): s = 0 for i in range (1,int(n**0.5)+1): if n % i == 0 and i*i != n: s += 2 elif i*i == n: s += 1 return s for i in range(540000,1000001): if f(i) == 5: print(i)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [735000; 790000], числа, имеющие ровно 8 различных натуральных делителя. В ответе запишите целую часть среднего арифметического всех полученных чисел.
def f(n): s = 0 for i in range (1,int(n**0.5)+1): if n % i == 0 and i*i != n: s += 2 elif i*i == n: s += 1 return s x = [] for i in range(735000, 790001): if f(i) == 8: x.append(i) print(sum(x)//len(x))
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [260000; 310000], числа, имеющие максимальное количество различных делителей. Найдите число, имеющее максимальное количество делителей , а также количество этих делителей. Запишите эти 2 числа через пробел.
def divs(x): d = set() for i in range(1,int(x**0.5)+1): if x % i == 0: d |= {i,x//i} return sorted(d) ans = [] maxdel = 0 for x in range(260_000,310_001): d = divs(x) if len(d) > maxdel: maxdel = len(d) ans = [x for x in range(260_000,310_001) if len(divs(x)) == maxdel] print(*ans,maxdel)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [13356;13400], числа, имеющие ровно шесть различных нечётных натуральных делителей. Для каждого найденного числа запишите эти шесть делителей. Делители в строке должны следовать в порядке возрастания через пробел.
В ответе для каждого найденного числа запишите найденные делители в порядке возрастания через пробел. Пример ввода ответа: делитель1.1 делитель1.2 делитель1.3 делитель1.4 делитель1.5 делитель1.6 делитель2.1 делитель2.2 делитель2.3 делитель2.4 делитель2.5 делитель2.6 ...
def f(n): s = [] for i in range (1,int(n**0.5)+1): if n % i == 0 and i*i != n: if i % 2 != 0: s.append(i) if (n//i) % 2 != 0: s.append(n//i) elif i*i == n: if i % 2 != 0: s.append(i) return s x = [] for i in range(13356,13401): a = f(i) if len(a) == 6: a.sort() print(a)
Ошибка.
Попробуйте повторить позже
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [323983; 500000], числа, имеющие ровно шесть различных натуральных делителя, не считая единицы и самого числа. В ответе запишите минимальное, а затем максимальное из таких чисел без пробела.
def f(n): s = 0 for i in range (2,int(n**0.5)+1): if n % i == 0 and i*i != n: s += 2 elif i*i == n: s += 1 return s x = [] for i in range(323983,500001): if f(i) == 6: x.append(i) print(x[0],x[-1])