Я написал свою собственную функцию в MATLAB, которая вернет мне «истину», если входной номер является простым числом и «ложным», если это не так.MATLAB не выдаст ответ
С цифрами 0, 1 и 2 он работает, но с чем-то выше 2 он ничего не делает. (Кстати, я воссоздал IsPrime, так OBV я не буду использовать это здесь.)
function [A] = myprime(p)
m = 2;
if p<1
disp('Number too low')
end
if p == 1
A = false;
end
if p == 2
A=true;
end
if p < 2
while m < p
A = true;
x = mod(p, m);
if x == 0
m=p;
R=false;
end
m=m+1;
end
end
end
Как вы можете видеть, это не дает результатов для 0,1 и 2, но ничего для любого числа выше 2:
Не зная о специфике Matlab, довольно очевидно, что у вас нет кода для обработки любых случаев, когда 'p> 2'. Похоже на typeo на вашем последнем 'if' возможно. Не могу сказать дальше. – CollinD
Кроме того, в любом случае нет кода, который устанавливает 'A = false''. Таким образом, даже при удалении опечатки все номера ввода возвращаются как простые. Я полагаю, что «R = false», это еще одна опечатка и должна быть «A = false». –