Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [312614; 312651], числа, имеющие ровно шесть различных натуральных делителей. Для каждого найденного числа запишите эти шесть делителей в шесть соседних столбцов на экране с новой строки. Делители в строке должны следовать в порядке возрастания.
Например, в диапазоне [12; 15] ровно шесть различных натуральных делителей имеет
1 2 3 4 6 12
Ответ:
Решим задачу перебором. Будем проверять количество делителей каждого числа из диапазона, если их количество равно шести — записываем их в двумерный
Приведём решение на языке Pascal.
var
x, numDel, i, j: longint;
d: array[1..6] of longint;
begin
for i := 312614 to 312651 do begin
numDel := 0;
for j := 1 to i do begin
if i mod j = 0 then begin
numDel := numDel + 1;
if numDel > 6 then break;
d[numDel] := j;
end;
end;
if numDel = 6 then writeln(d[1], ' ', d[2], ' ', d[3], ' ', d[4], ' ', d[5], ' ', d[6]);
end;
end.
В результате работы программа должна вывести следующее:
1 2 4 78157 156314 312628
1 3 9 34739 104217 312651
Приведём решение Михаила Глинского на языке Python.
for x in range(312614,312651+1):
d = [1,x]
k = 0
for i in range (2,x//2+1):
if x%i==0:
d.append(i)
k+=1
if k>4:
break
if k==4:
d.sort()
print(*d)

