Не считая количество идеальных чисел в диапазоне? - PullRequest
0 голосов
/ 29 октября 2018

Я хочу найти количество идеальных чисел в диапазоне. Это то, что я сделал до сих пор.

#include <iostream>

using namespace std;

int main()
{
   // cout<<"Hello World";
   int sum = 0;
   int count = 0;
   int x,y;
   cout<<"Enter the first number";
   cin>> x;
   cout<<"Enter the second number";
   cin>>y;
   for(int i=x;i<=y;i++)
   {
       for(int j=1; j<i; j++)
       {
           if(i%j == 0)
           {
               sum=sum+j;
           }
       }
       if(sum == i)
       {
           count++;
       }
   }
   cout<<"The number of pefect numbers are: "<<count;


}

Однако, когда я ввожу диапазоны, это дает мне, что число совершенных чисел, доступных, например, в диапазоне от 1 до 10, равно 0.

Почему это? Я не могу понять, что здесь не так?

1 Ответ

0 голосов
/ 29 октября 2018

Нужно сделать sum=0 для каждого входа. Например,

if(sum == i) {
      count++;
}
sum = 0; /* add this line here */

Или

for(int i=x;i<=y;i++) {
        sum = 0; /* or make sum as 0 here  */
        for(int j=1; j<i; j++) { 
                if(i%j == 0) {
                        sum=sum+j;
                }
        }
        if(sum == i) {
                count++;
        }
}

Также прочитайте Почему «использование пространства имен std» считается плохой практикой?

...