Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [95632; 95700], числа, имеющие ровно шесть различных чётных натуральных делителей (при этом количество нечётных делителей может быть любым). Для каждого найденного числа запишите эти шесть делителей в шесть соседних столбцов на экране с новой строки. Делители в строке должны следовать в порядке возрастания.
Например, в диапазоне [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 := 95632 to 95700 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 10 50 3826 19130 95650
2 26 338 566 7358 95654
2 4 8 23918 47836 95672
Приведём другое решение на языке Python.
for num in range(95632, 95701):
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) == 6:
deliteli.sort()
print(deliteli[0], deliteli[1], deliteli[2], deliteli[3], deliteli[4], deliteli[5])
Приведём решение Ивана Гладких на языке Python.
for n in range(95632,95700+1):
c = 0
de = []
for j in range(1,n+1):
if n % j == 0:
if j % 2 == 0:
c += 1
de.append(j)
if c == 6:
print(n,de)

