77.69K
Category: programmingprogramming

Программирование. Обработка целочисленной информации. Оптимизация

1.

Вебинар 11.03.2022г
Задание № 25.
Программирование.
Обработка целочисленной информации.
Оптимизация.
Калагур Оксана Алексеевна,
Учитель информатики
МБОУ «Гимназия № 1»

2.

Условие задачи
Пусть M — сумма минимального и максимального
натуральных делителей целого числа, не считая единицы и самого
числа. Если таких делителей у числа нет, то считаем значение M
равным нулю.
Напишите программу, которая перебирает целые числа,
большие 220000, в порядке возрастания и ищет среди них такие,
для которых значение M оканчивается на 4. Вывести первые 5
найденных чисел и соответствующие им значения M.
Формат вывода: для каждого из 5 таких найденных чисел в
отдельной строке сначала выводится само число, затем — значение
М. Строки выводятся в порядке возрастания найденных чисел.

3.

Код программы (PascalABC)
var M, mind, maxd, d, i: integer;
Begin
k := 1; i := 220001;
while k <= 5 do
begin
M := 0; min d := 0; maxd := 0;
for d := 2 to round(sqrt(i)) do
if i mod d = 0 then begin
mind := d;
maxd := i div d; break; end;
M := maxd + mind;
if M mod 10 = 4 then begin
k := k + 1; writeln (i, ‘ ‘, M); end;
end;
i := i + 1;
end.

4.

Код программы (Python)
k=1
for i in range (220001, 220100)
for d in range(2, int(i ** 0,5))
if i % d == 0:
M = d + i // d
break
if M % 10 == 4:
k +=1
if k <=5:
print(i, M)
Ответ:
220004 110004
220023 73344
220024 110014
220033 20014

5.

Условие задачи
Назовём нетривиальным делителем натурального
числа его делитель, не равный единице и самому числу.
Найдите все натуральные числа, принадлежащие
отрезку [525784203; 728943762] и имеющие ровно три
нетривиальных делителя. Для каждого найденного
числа запишите в ответе само число и его наибольший
нетривиальный
делитель.
Найденные
числа
расположите в порядке возрастания.

6.

Код программы (PascalABC)
var i, j: longint; k, t: integer;
a: array[1..3] of longint;
begin
for i:=123456789 to 223456790 do
begin k:=0; a[1]:=0; a[2]:=0; a[3]:=0;
if round(sqrt(i))=sqrt(i) then begin a[2]:=round(sqrt(i));
for j:=2 to round(sqrt(i)-1) do
if i mod j = 0 then
begin
k:=k+1; t:=j;
end;
if k = 1 then begin a[1]:=t; a[3]:=i div t; end;
if (a[1] <> 2) and (a[2] <> 0) and(a[3] <> 0) then
writeln(i, ' ',a[1],' ', a[2],' ', a[3]);
end;
end;
end.
Ответ:
131079601 107 11449 1225043
141158161 109 11881 1295029
163047361 113 12769 1442897

7.

Код программы (Python)
a=[]
import math
for i in range(525784203, 728943762):
b = []
if int(sqrt(i)) == sqrt(i) :
b.append(sqrt(i))
else:
continue
for j in range(2, int(sqrt(i))):
if i % j == 0:
b.append(j)
b.append(i //j)
if len(b) > 3:
break
if len(b) == 3:
a.append([max(b)])
print(i)
print(a)
Ответ:
607573201
705911761
[[3869893], [4330747]]
English     Русский Rules