Проверка числа на совершенность - C (СИ)

Формулировка задачи:

Задача: использовать функцию, которая определяет, является ли введённое число совершенным или нет + в ней отобразить все совершенные числа в диапазоне от 1 до 1000. Первая часть у меня получилась, а вот вывести остальные числа что-то не очень вышло..
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <math.h>
 
void sov(int);
int main ()
{
    int num;
    setlocale(LC_ALL,"russian");
    printf("Введите число \n");
    scanf_s("%d",&num);
    sov(num);
    _getch();
    return 0;
}
    
void sov(int num)
{
    int sum=0,num2,sum2=0;
    for (int i=1;i<num;i++)
    {
        if (num%i==0) 
        {
            sum=sum+i;
        }
    }
    if (sum==num)
        printf("Ваше число совершенно!");
    
    else        
        printf("Ваше число несовершенно!");
 
    printf("Список совершенных чисел до 1000: ");
    for (int num2=2;num2<=1000;num2++)
    {
        for (int i=1;i<num2;i++)
        {
            if (num2%i==0)
            {
                sum2=sum2+i;        
                if (sum2==num2)
                printf("%d ",num2);
            }
        }
    }
}

Код к задаче: «Проверка числа на совершенность - C (СИ)»

textual
/* функция проверки числа на сорвершенство */
static inline int isperfect(int n)
{
    int sum = 0, i = 1;
    
    for(; i <= n / 2; i++)
        if(n % i == 0)
            sum += i;
    return sum == n;
}
/* функция проверки чисел, меньших и равно high на совершенство */ 
static inline void foo(int high)
{
    int i = 1;
    /* если high < 0 вызываем эту же функцию с положительным high */
    if(high < 0)
        foo(-high);
    /* если high == 0 просто выходим */
    if(high == 0)
        return;
    /* прогоняем цикл от 1 до high */
    for(; i <= high; i++)
        /* если число совершенное */
        if(isperfect(i))
            /* просим его распечатать */
            printf("%4i", i);
    /* переводим курсор на новую строку */
    puts("");
    return;
}

5   голосов, оценка 3.800 из 5


СОХРАНИТЬ ССЫЛКУ