好吧,我一直在创建一个素数检查器。我已经成功地使它适用于特定的号码。代码在这里。Matlab Prime number list checker
#To test if number is prime
prompt = input("number to test if prime: ");
n = prompt;
i = 2; #start of mod test
t = floor(sqrt(n));
counter = 0;
tic
for i = 2:t
if mod(n,i) == 0
disp('n is not prime')
break
else
counter = (counter + 1);
end
end
if counter == t-1
disp('n is prime')
end
toc
然后我试着做一个程序来测试一系列的数字。它在n = 10的时候取得了成功,但是当我高于这个数字时,它似乎没有提高质数。我不确定我要去哪里错。
#Want to test numbers 2:n if they're prime
prompt = input("max number to test: ");
n = prompt;
l = 2; #start of mod test
counter = 0;
tic
for i = 2:n #cycle to test 2 up to n
t = floor(sqrt(i)) #Only need to test up to root of number
for l = 2:t
if mod(i,l) == 0
break
else
counter = (counter + 1);
end
end
if counter == t-1 # if tested up to the root of the number, it must be prime
prime = sprintf('%d is prime', round(i));
disp(prime)
counter = 0;
end
end
toc
在得到它的较大值工作任何帮助将不胜感激,也什么方法可以使代码更高效。顶级程序可以在0.268秒内在我的笔记本电脑上测试982451653。
这是1)的乐趣吗? 2)上课吗? 3)或者你实际上需要一个质数检查器? – Suever
只是为了好玩:)在大学开始之前试图让matlab变得更好! –
提高效率的提示:如果一个数字不能被2除,那么它将不会是4,6,8 ......因此您可以减少大量的检查。同样,对于3,6,9等... –