What's wrong in it?

1 visualización (últimos 30 días)
SAYANTAN BHANJA
SAYANTAN BHANJA el 25 de Jul. de 2017
Comentada: SAYANTAN BHANJA el 26 de Jul. de 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 comentarios
per isakson
per isakson el 25 de Jul. de 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 el 26 de Jul. de 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.

Iniciar sesión para comentar.

Respuesta aceptada

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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Elementary Polygons en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by