Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [110203; 110245], числа, имеющие ровно четыре различных чётных натуральных делителя (при этом количество нечётных делителей может быть любым). Для каждого найденного числа запишите эти четыре делителя в четыре соседних столбца на экране с новой строки. Делители в строке должны следовать в порядке возрастания.
Например, в диапазоне [2; 16] ровно четыре чётных различных натуральных делителя имеют
2 4 6 12
2 4 8 16
Ответ:
Решим задачу перебором. Будем проверять количество делителей каждого числа из диапазона, если их количество равно четырём — записываем их в двумерный
Приведём решение на языке Pascal.
var
numDel, i, j: longint;
d2: array[1..4] of longint;
begin
for i := 110203 to 110245 do begin
numDel := 0;
for j := 1 to i do begin
if (i mod j = 0) and (j mod 2 = 0) then begin
numDel := numDel + 1;
if numDel > 4 then break;
d2[numDel] := j;
end;
end;
if numDel = 4 then writeln(d2[1], ' ', d2[2], ' ', d2[3], ' ', d2[4]);
end;
end.
В результате работы программа должна вывести следующее:
2 4 55102 110204
2 14 15746 110222
2 6 36742 110226
2 22 10022 110242
Приведём решение Витаса Ремейкиса на языке Python.
for num in range(110203, 110246):
deliteli = []
for d in range(1, int(num**0.5) + 1):
if num % d == 0:
if d % 2 == 0:
deliteli.append(d)
if num//d != d and num//d % 2 == 0:
deliteli.append(num//d)
if len(deliteli) == 4:
deliteli.sort()
print(deliteli[0],deliteli[1],deliteli[2],deliteli[3])
Приведём решение Михаила Глинского на языке Python.
for x in range(110203,110245+1):
n={x}
for y in range(2,round(x**0.5)+1):
if x%y == 0 and y%2 == 0:
n.add(y)
if x%y == 0 and (x//y)%2 == 0:
n.add(x//y)
if len(n) > 4:
break
n = sorted(n)
if len(n)==4:
print(*n)
Приведём решение Ильи Андрианова на языке Python.
def divisors(x):
div = []
for j in range(1, int(x**0.5)+1):
if x % j == 0:
div.append(j)
div.append(x // j)
return sorted(set(div))
for x in range(110203, 110245+1):
div = divisors(x)
chet = [x for x in div if x % 2 == 0]
if len(chet) == 4:
print(*chet)

