Переведите пожалуйста код с pascal на Python
var i,j,m,n:longint;
begin
for j:=100000000 to 300000000 do begin
i:=j;
m:=0;
n:=0;
while i mod 2 = 0 do begin
i:=i div 2;
m:=m+1;
end;
if (m mod 2 = 0) and (m>0) then begin
while i mod 7 = 0 do begin
i:=i div 7;
n:=n+1;
end;
if (n mod 2 <> 0) and (i=1) then writeln(j);
end;
end;
end.
Ответы (1 шт):
Автор решения: Алексей Белкин
→ Ссылка
Хоть код и переведен, но я не рекомендую его запускать, т.к. очень большие вычисления и Ваш ПК просто может зависнуть. Поэтому данный код чисто для понимая найденного Вами алгоритма.
for j in range(10 ** 8, 3*10 ** 8 + 1):
i = j
m = 0
n = 0
while i % 2 == 0:
i //= 2
m += 1
if (m % 2 == 0) and (m > 0):
while i % 7 == 0:
i //= 7
n += 1
if (n % 2 != 0) and (i == 1):
print (j)