Я хочу найти количество идеальных чисел в диапазоне.
Это то, что я сделал до сих пор.
#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.
Это почему? Я не могу понять, что здесь не так?
Нужно сделать 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» считается плохой практикой?
Других решений пока нет …