Напечатать все пары дружественных чисел, не превосходящих заданного натурального числа - 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);
  }
}

Объяснение кода листинга программы

В этом коде:

  1. Переменная N содержит число, которое не должно быть превышено парами дружественных чисел.
  2. Переменная k инициализируется значением 2 и увеличивается на 1 до тех пор, пока не станет меньше или равной N. Это делается для того, чтобы проверить все числа до N.
  3. Переменная s инициализируется значением 1 и увеличивается на сумму всех делителей числа k, которые меньше его половины. Если s станет равным k, то числа являются дружественными. В этом случае числа k и s выводятся на экран.
  4. Если s меньше k, то переходим к следующему числу.
  5. Если s больше k, то переходим к переменной s2, которая инициализируется значением 1 и увеличивается на сумму всех делителей числа s, которые меньше его половины. Если s2 станет равным k, то числа k и s выводятся на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы