Читает целое число и печатает все совершенное число меньше указанного целого - PullRequest
0 голосов
/ 22 октября 2019

Я могу найти идеальные числа, но я не могу напечатать все совершенные числа, меньшие, чем данное целое число.

int main() {

    cout << "Enter a number ";
    int number{};
    cin >> number;
    int sum{};

    int j{};
    for (int i = 1; i < number ; i++) {
        j = number % i;
        if (j == 0)
            sum = sum + i;
    }
    if (sum == number){
        cout << sum;

Я ожидаю вывод 6 28 496 для input=500

1 Ответ

1 голос
/ 23 октября 2019

Похоже, что вы собрали свою логику "все идеально" с логикой "все числа под заданным пределом", чтобы вы не получили желаемых результатов.

Я бы прошел ваш тести поместите его в функцию.

bool isPerfect(int number) {
    int j{}, sum{};
    for (int i=1; i<number; i++) {
        j = number % i;
        if (j == 0) sum = sum + i;
    }
    return (sum == number);
}

Затем вызовите эту функцию несколько раз со всеми целыми числами, меньшими, чем заданный вход:

int main()
{
    std::cout << "Enter a number ";
    int number{};
    std::cin >> number;
    for (int n = 1; n <= number; n++) {
        if (isPerfect(n))
            std::cout << n << " ";
    }
}

Output given limit of 30 = 6 28

Конечно, вы все равно можете делать все это в своей функции main (), но это намного понятнее, когда вы разбиваете ее.

...