*(В. Лашин) Напишите программу, которая перебирает целые числа, большие \(24~517~512,\) в порядке возрастания и ищет среди них числа, представленные в виде произведения \(12\) простых множителей, не обязательно различных. В ответе в первом столбце таблицы запишите первые \(5\) найденных чисел в порядке возрастания, а во втором столбце – соответствующий наибольший из найденных множителей для каждого из них.
Решение:
Python
def factor(x):
ans = []
for i in range(2, int(x ** 0.5) + 1):
while x % i == 0:
ans.append(i)
x //= i
if x > 1:
ans.append(x)
return ans
q = 0
n = 24_517_512
while q < 5:
div = factor(n)
if len(div) == 12:
print(n, max(div))
q += 1
n += 1
Java
import java.util.ArrayList;
import java.util.Collections;
public class z8393 {
static ArrayList factor(int n) {
ArrayList res = new ArrayList<>();
for (int i = 2; i < Math.ceil(Math.sqrt(n)); i++) {
while (n % i == 0) {
res.add(i);
n /= i;
}
}
if (n > 1)
res.add(n);
return res;
}
public static void main(String args[]) {
int q = 0;
int n = 24517512;
while (q < 5) {
ArrayList div = factor(n);
if (div.size() == 12) {
System.out.println(n + " " + Collections.max(div));
q += 1;
}
n += 1;
}
}
}
Ответ:
\(24517728 \,\, 1051\)
\(24518400 \,\, 1277\)
\(24519680 \,\, 4789\)
\(24521472 \,\, 367\)
\(24521616 \,\, 53\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене