Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [125 256; 125 330], числа, имеющие ровно шесть различных чётных натуральных делителей. Для каждого найденного числа запишите эти шесть делителей в шесть соседних столбцов на экране с новой строки. Делители в строке должны следовать в порядке возрастания.
Например, в диапазоне [2; 48] ровно шесть чётных различных натуральных делителей имеют числа
2 4 6 8 12 24
2 4 6 12 18 36
2 4 8 10 20 40
Ответ:
Решим задачу перебором. Будем проверять количество делителей каждого числа из диапазона, если их количество равно шесть — записываем их в двумерный
Приведём решение на языке Pascal.
var
numDel, i, j: longint;
d2: array[1..6] of longint;
begin
for i := 125256 to 125330 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 > 6 then break;
d2[numDel] := j;
end;
end;
if numDel = 6 then writeln(d2[1], ' ', d2[2], ' ', d2[3], ' ', d2[4], ' ', d2[5], ' ', d2[6]);
end;
end.
В результате работы программа должна вывести следующее:
2 6 18 13918 41754 125262
2 4 8 31322 62644 125288
2 6 18 13922 41766 125298
Приведём решение Витаса Ремейкиса на языке Python.
for num in range(125256, 125331):
d = []
for j in range(1, int(num**0.5) + 1):
if num % j == 0:
if j % 2 == 0:
d.append(j)
if num//j % 2 == 0 and num//j != j:
d.append(num//j)
if len(d) == 6:
d.sort()
print(d[0], d[1], d[2], d[3], d[4], d[5])
Приведём решение Новоселова Павла на языке Python.
for x in range(125256,125331):
kl=[]
for d in range(2,x//2+1,2):
if x%d==0:
kl.append(d)
if len(kl)>5:
break
if len(kl)==5:
print(kl,x)
Приведём другое решение на языке Python.
def div(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 sorted(d)
for x in range(125256,125331):
d = [x for x in div(x) if x%2==0]
if len(d)==6:
print(d)
Приведём решение Егора Чернецова на языке Python.
for n in range(125256, 125331):
d = [i for i in range(2, n + 1, 2) if n % i == 0]
if len(d) == 6:
print(*d)
Приведём решение Юрия Красильникова на языке Python.
def chetdel(n):
d = set()
k = 1
while k**2 <= n:
if n%k == 0: d |= {k,n//k}
k += 1
return sorted([x for x in d if x%2 == 0])
for n in range(125256,125330+1):
cd = chetdel(n)
if len(cd) == 6: print(*cd)

