MATLAB中的Smallest_multiple函数

时间:2016-09-23 06:00:12

标签: algorithm matlab

您好我在Matlab中遇到以下功能问题。有人可以帮忙吗? 2520是可以除以1到10中的每个数字而没有任何余数的最小数字。编写一个名为smallest_multiple的函数,它返回一个uint64,这是一个最小的正数,可以被1到n的所有数字整除,其中n是一个正整数标量,是函数的唯一输入参数。如果结果大于可以表示为uint64的结果,则函数返回0.(由Project Euler启发。)

下面是我为该函数编写的代码,但它给出了错误     反馈:你的函数在参数2中出错了

Your solution is _not_ correct.

请帮助......

function [answer]=smallest_multiple(n)
limit = 1e10;

N = 20;

for i = N:N:limit

    for j = N:-1:1

    if mod(i,j) ~= 0

        break

    end

end

if j == 1

    answer = i;

    break

    end

end

fprintf('The smallest evenly divisible number is %.0d\n',answer)

1 个答案:

答案 0 :(得分:0)

您的功能看起来正确。但是,您传递的参数是小写n,而不是您在代码中使用的大写N

所以正确的函数(带参数的限制)是

function [answer]=smallest_multiple(N,limit)

for i = N:N:limit

    for j = N:-1:1

        if mod(i,j) ~= 0
            break
        end

    end

    if j == 1
        answer = i;
        break
    end

end

fprintf('The smallest evenly divisible number is %.0d\n',answer)