Напечатать все пары дружественных чисел, не превосходящих заданного натурального числа - C (СИ)
Формулировка задачи:
2. Два натуральных числа называются дружественными, если каждое из них равно сумме всех делителей другого, за исключением самого себя (таковы, например, числа 220 и 284). Напечатать все пары дружественных чисел, не превосходящих заданного натурального числа. [/I]
Решение задачи: «Напечатать все пары дружественных чисел, не превосходящих заданного натурального числа»
textual
Листинг программы
- for(k=2; k<=N; k++) {
- s = 1;
- for(j=2; j <= k/2; j++)
- if (k%j==0) s+= j;
- if (s < k) continue;
- if (s==k) printf("%d %d\n", k, k);
- else {
- s2 = 1;
- for(j=2; j <= s/2; j++)
- if (s%j==0) s2+= j;
- if (s2==k) printf("%d %d\n", k, s);
- }
- }
Объяснение кода листинга программы
В этом коде:
- Переменная
N
содержит число, которое не должно быть превышено парами дружественных чисел. - Переменная
k
инициализируется значением 2 и увеличивается на 1 до тех пор, пока не станет меньше или равнойN
. Это делается для того, чтобы проверить все числа доN
. - Переменная
s
инициализируется значением 1 и увеличивается на сумму всех делителей числаk
, которые меньше его половины. Еслиs
станет равнымk
, то числа являются дружественными. В этом случае числаk
иs
выводятся на экран. - Если
s
меньшеk
, то переходим к следующему числу. - Если
s
большеk
, то переходим к переменнойs2
, которая инициализируется значением 1 и увеличивается на сумму всех делителей числаs
, которые меньше его половины. Еслиs2
станет равнымk
, то числаk
иs
выводятся на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д