Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [210 235; 210 300], числа, имеющие ровно четыре различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти четыре делителя в четыре соседних столбца на экране с новой строки. Делители в строке должны следовать в порядке возрастания.
Например, в диапазоне [10; 16] ровно четыре различных натуральных делителя имеет
2 3 4 6
Ответ:
Решим задачу перебором. Будем проверять количество делителей каждого числа из диапазона, если их количество равно четырем — записываем их в массив d.
Приведём решение на языке Pascal.
var
numDel, i, j: longint;
d: array[1..4] of longint;
begin
for i := 210235 to 210300 do begin
numDel := 0;
for j := 2 to (i div 2) do begin
if i mod j = 0 then begin
numDel := numDel + 1;
if numDel > 4 then break;
d[numDel] := j;
end;
end;
if numDel = 4 then writeln(d[1], ' ', d[2], ' ', d[3], ' ', d[4]);
end;
end.
Приведём решение на языке Python.
for i in range(210235,210301):
k=0
a=[]
for j in range(2,i//2+1):
if i%j==0:
k+=1
a.append(j)
if k>4:
break
if k==4:
print(a)
В результате работы программа должна вывести следующее:
2 4 52561 105122
2 4 52567 105134
2 4 52571 105142

