Дано натуральное число n. Найти и вывести на экран монитора все его делители в порядке возрастания.
Вообще, это простая задача: надо перебрать числа 2, 3 … и проверить, делится ли число n на эти числа (1 и само n является всегда делителем) . А вот до каких пор перебирать эти числа? Почему то этот вопрос вызывает у большинства затруднение. Тут необходимо догадаться, что самый маленький делитель числа n – это 2. Тогда самый максимальный делитель n div 2  и нет никакой необходимости проверять числа после n div 2 . Чтобы не выводить отдельно делитель 1, мы проверку в программе начнем с 1 и до n div 2  (строка 6). Число   n выведем отдельно (строка 8)
| 1 2 3 4 5 6 7 8 9 10 11 12 | Program A2_13; Var   n,i:integer;  begin    readln(n);    for i:=1 to
 n div 2  do      if (n mod
 i = 0) then write(i,' ');    writeln(n);    readln;  end. | // Program A2.12; #include <iostream> 
 using namespace std; 
 int main() {  int n,i;     
 cin>>n;     for(i=1;
 i<=n/2; i++)   if(n%i==0) cout<<i<<" ";     cout
 << n << endl;     return 0; } | 
Примечание. В программе наверху мы, вообще говоря, делаем двойную работу. Например, пусть исходным числом будет 96. Число 2 является его делителем, а значит и 96 div 2 =48 также будет делителем, число 3 – делитель, а значит и 96 div 3 = 32 также будет делителем, а в программе мы после нахождения 2 и 3 продолжаем поиск и затем находим и 32 и 48. Но нас «прощает» то, что по условию задачи нам надо выводить делители в порядке возрастания. Подмеченное нами свойство мы затем используем в дальнейших задачах.



















