Code printing double line

1 view (last 30 days)
Laeya
Laeya on 31 May 2018
Commented: Paolo on 31 May 2018
num1 =input('Enter your 1st number: ');
num2 =input('Enter your 2nd number: ');
%returns an 1-by-num2 matrix of zeros
PerfectNumber= zeros(1,num2);
for pp = num1:num2 % pp = Potential Perfect number, variable for the range
if true
end
pd = 1:pp-1;
%test all potential numbers up to pp-1 because of the definition of a perfect number.
%potential divisors, named 'pd' in the code
if (sum(pd(mod(pp,pd) == 0)) == pp)
%mod(pp,pd) returns the remainder after dividing pp by pd.
%If a number is a divisor, the remainder is 0, so mod return zero.
%check if the sum of all divisors = pp
PerfectNumber(pp) = pp;
%it have found a perfect number and store this number in a variable 'output' at the pp'th position
if false
else PerfectNumber (PerfectNumber == 0) = [];
%all positions where output is 0 are replaced by the empty matrix []
fprintf ('\nThe Perfect Numbers are : %d', PerfectNumber);
%And it will print out the name line + the perfect number
end
%After this loop we have the perfect numbers at the position of the perfect numbers.
end
end
fprintf ('\nThe program ends here, Good bye %s !',un);
%to inform the user that the program has ended or when the entry is invalid it end the program.
end
And my out put would be
Enter your 1st number: 1
Enter your 2nd number: 50
The Perfect Numbers are : 6
The Perfect Numbers are : 6
The Perfect Numbers are : 28
The program ends here, Good bye !>>
What should i do to my code so that it only print the line "The Perfect Numbers are : 6" once and not double like this.
  2 Comments
Paolo
Paolo on 31 May 2018
Try changing:
PerfectNumber(pp) = pp;
to
PerfectNumber = pp;
Laeya
Laeya on 31 May 2018
Thank you so much ! yours work well too !

Sign in to comment.

Accepted Answer

Rishabh Rathore
Rishabh Rathore on 31 May 2018
Edited: Rishabh Rathore on 31 May 2018
What is happening is that you are actually printing the whole vector instead of the latest 'perfect Number'.
Make your print line look like below.
fprintf ('\nThe Perfect Numbers are : %d', PerfectNumber(end));
  2 Comments
Laeya
Laeya on 31 May 2018
Thank you so much for the help! been stuck on this for so long!!
Paolo
Paolo on 31 May 2018
The question here is whether you need all the numbers in PerfectNumber in a different stage of the code. If you do not, there is no reason for you to have
PerfectNumber(pp) = pp;
as I mentioned in the comment.

Sign in to comment.

More Answers (0)

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!