Напечатать все пары дружественных чисел, не превосходящих заданного натурального числа - 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
выводятся на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д