While - цикл с условием for - цикл с известным количеством шагов (итераций)
чтобы воспользоваться for нужно знать точно количество шагов (интераций)
например, заполняем массив arr из 10 единиц типа int for(i = 0; i < 10; i++) arr[i] = 0; // точно знаем что 10 элементов и делаем 10 интераций
если же нам не известно количество интераций цикла, например организовать ввод переменной до тех пор, пока пользователь не введет 0 сколько будет интераций - неизвестно и зависит сугубо от пользователя
int num; do { cin >> num // вводим цифру } while(num != 0); // повторяем ввод, пока цифра не равна 0
( do while - разновидность while, в которой условие проверяется не перед первой интерацией, а после нее )
примеры представлены на c++, но в принципе и так понятно
Пояснення:В качестве кандидатов нужно рассматривать числа, не превышающие
(
S
−
1
)
2
, так как в худшем случае составное число вида
x
2
будет иметь два наибольших делителя
x
и 1. Время работы этого алгоритма
O
(
S
4
)
. Можно существенно ускорить вычисления, если учесть, что при поиске разложения на множители числа
N
можно рассмотреть только числа не превышающие
√
N
. Наибольшим делителем числа
N
будет
N
a
, где
a
– наименьший делитель, а вторым наибольшим делителем будет либо
N
b
, где
b
– второй по величине делитель
N
(также либо число, либо
a
2
), либо
a
, если
N
является произведением двух различных чисел, либо 1, если
N
=
a
2
.