Effacer les filtres
Effacer les filtres

What's wrong in it?

1 vue (au cours des 30 derniers jours)
SAYANTAN BHANJA
SAYANTAN BHANJA le 25 Juil 2017
Commenté : SAYANTAN BHANJA le 26 Juil 2017
Write a function called smallest_multiple that returns a uint64, the smallest positive number that is evenly divisible by all of the numbers from 1 to n where n is a positive integer scalar and is the only input argument of the function. If the result would be greater than what can be represented as a uint64, the function returns 0.
function LCM=smallest_multiple(n)
%
x=(1:1:n);
r=1;
i=1;
while(i<=length(x))
r=(lcm(r,x(i)));
i=i+1;
end
if(r>intmax('uint64'))
LCM=uint64(0);
else
LCM=uint64(r);
end
end
GIVING ERROR FOR INPUT 45 .
  2 commentaires
per isakson
per isakson le 25 Juil 2017
I cannot reproduce the error on R2016a 64bit.
LCM=smallest_multiple(45)
returns
Warning: Inputs contain values larger than the largest consecutive flint.
Result may be inaccurate.
...
LCM =
0
ES
ES le 26 Juil 2017
What is your error? Is it about memory? What MATLAB version do you use? I have tried your script in R2014B-64 bit. It works well.

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 26 Juil 2017
Change your x and r to
x=uint64(1:1:n);
r=uint64(1);
  1 commentaire
SAYANTAN BHANJA
SAYANTAN BHANJA le 26 Juil 2017
Thanks a lot sir..... It works perfectly now

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by