Домашние задания: Информатика

Пожалуйста,помогите с Информатикой 10кл, с пояснением. Благодарю заранее.

Помогите с информатикой 10 класс( с объяснением) Благодарю.
Напишите программу(в Beton), которая ищет среди целых чисел, принадлежащих числовому отрезку (310705; 310729), простые числа, т.е. числа, имеющие ровно два различных натуральных делителя- единицу и само это число. Для каждого найденного числа Запишите его с новой строки; числа должны следовать в порядке возрастания.
Например, в диапазоне ( 10; 20) ровно четыре простых числа- 11, 13, 17 и 19, поэтому для этого диапазона ответ должен быть таким:

11

13

17

19
SV
Sergei Volkov
96
Диапазон, конечно, небольшой, и решения ребят, знающих только полный перебор, в данном случае полностью применимы. Но вот более универсальное решение:
 LOW_PRIMES = [2, 3, 5]
def candidates(start, sqrstop):
for n in LOW_PRIMES:
if n >= start: yield n
start = max(start, LOW_PRIMES[-1] + 1) | 1
step = (start % 3 * 2) ^ 6
while start * start cand: return True
return True

lo, hi = 310705, 310729
PRIMES = LOW_PRIMES.copy()
for cand in candidates(LOW_PRIMES[-1] + 1, hi):
if test(cand, PRIMES[2:]): PRIMES.append(cand)
ps = (cand for cand in candidates(lo, hi * hi) if test(cand, PRIMES[2:]))
print(*ps)
Генерируем список простых делителей до √N (N - верхняя граница диапазона из условия задачи). Делители проверяются на делимость об тот же список до √D, где D - кандидат в делители. Кандидаты - это 2, 3, 5, а далее - нечётные числа с шагом из кольца (2, 4) - это позволяет обходиться без проверок делимости на 2 и 3. Кольцо, кстати, можно расширить, чтобы сразу исключать делимость на 5, 7 и т.д., но каждое следующее число сильно усложняет его структуру.
Дальше перебираем кандидатов в диапазоне из условия задачи, уже только с проверкой делимости, но без добавления в список простых чисел.
Плюсы:
1) Перебираются не все числа, а только 1/3 из них.
2) Для каждого числа перебираются не все делители, а только простые от 5 до корня из числа.
Асылбек Козбаев
Асылбек Козбаев
87 571
Лучший ответ
PascalABC:

function prost(n:integer):boolean;
var i:integer;
begin
if n<=1 then writeln('Числа меньше 2 не являются простыми')
else
begin
prost:=true;
for i:=2 to Round(Sqrt(n)) do
if n mod i=0 then prost:=false;
end;
end;

begin
WriteLn (' Простые числа: ' );
for var i:=310705 to 310729 do
if prost(i) then writeln(' ',i);
end.

нач
для i := 310706 до 310728 цикл
простое := да
для j := 2 до i-1 цикл
если i mod j = 0 то
простое := нет
конец если
конец цикла
если простое то
вывод(i)
конец если
конец цикла
конец