好吧,我一直在創建一個素數檢查器。我已經成功地使它適用於特定的號碼。代碼在這裏。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等... –