[Solved] My code works for only one input. Please advice


Your problem is here:

for(int i =2;i<=n-1;i++)
    {
        if(n%i != 0)
        {
            break;
        }
        else
        {
            sum = sum + i;
        }
    }

With break you are stopping the whole iteration of you for loop, meaning after the first number which is not a divisor, i.e. where n%i != 0 equals true you are breaking out of the loop and continue execution with if(sum == n). I guess you where mistaken that as you don’t want to add is which are not a divisor, you where too “eager” not to count them. I guess you mixed it up with continue which would had gone back to the for condition check and would have continued execution with i+1 if the condition is still true.

Still as you had packed the addition in an else branch, meaning the summation would either way only happen if and only the if before n%i != 0 would be false, meaning if its a divisor. Thats the reason you don’t need either continue, which would not do any big difference, nor break, which “breaks” you program in this case.

3

solved My code works for only one input. Please advice