【问题标题】:Smallest_multiple function in MATLABMATLAB 中的 Smallest_multiple 函数
【发布时间】:2016-09-23 06:00:11
【问题描述】:

您好,我在使用 Matlab 中的以下函数时遇到问题。有人可以帮忙吗? 2520 是可以除以 1 到 10 的每个数字而没有任何余数的最小数字。编写一个名为 minimum_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)

【问题讨论】:

  • 可能是因为您设置了N = 20;(加上@fcdimitr 提到的参数不正确)。
  • 嘿,谢谢您的帮助,我删除了 N 的值并再次运行它,但错误仍然存​​在....任何帮助。
  • 您在运行代码时是否遇到任何错误?
  • 嗨,看看它指出函数应该只有 1 个输入的问题。现在在下一行中,我们将 limit 作为 N 的限制,因此我们需要纠正它以使代码运行并实际上替换整个代码中的 N。你能帮我解决这个问题吗?我认为解决该问题可能会使其运行良好
  • 你没有回答我的问题。

标签: algorithm matlab


【解决方案1】:

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

所以正确的函数(以limit为参数)是

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)

【讨论】:

  • 嗨..非常感谢您的帮助!但是该函数仍然给出相同的错误。任何其他方式来处理它..提前谢谢,它有点紧急
  • 另外问题指出 N 或 n 应该是唯一的输入参数,所以可能 b 需要用其他东西替换限制以使其运行...谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-17
  • 2013-12-27
  • 2023-03-05
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多