第一种方法:
matlab本身就带求n以内
素数的函数,叫primes()
所以最简单的就是直接用primes(1000)
篇幅关系我用100举例,比如
>> primes(100)
ans =
Columns 1 through 17
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59
Columns 18 through 25
61 67 71 73 79 83 89 97
第二种方法:
另外matlab自带的还有一个判断某数是否为素数的函数,叫isprime()
用这个编程的话,
p = 2; % 2是第一个素数
for i = 3:2:10000 % 其他素数一定是奇数,所以从3开始的奇数来判断
if isprime(i)
p = [p i]; % 如果i是素数,在p后面增加一个i值。
end
end
p
第三种方法:
如果用系统自带的函数的话
n=10000;
p = 1:2:n; % 找出奇数,因为除了2的所有素数都是奇数
q = length(p);
p(1) = 2; % 第一个素数为2
for k=3:2:sqrt(n)
if p((k+1)/2) % 如果p((k+1)/2)也就是p中原本应该等于k的那个数不为0的话
p((k+1)/2+k:k:q)=0;
% 这句的作用就是把p中所有能被k整除的数设为0,但不包括k本身。
% (k+1)/2是奇数k在p中的位置,(k+1)/2+k代表p中除了k本身之外的第二个能被k整除的数的位置,依此类推
end
end
p=p(p>0); % 把等于0的,也就是原来位置上的数是合数的去掉
fprintf('%d以内的素数有:\n',n);
q=length(p);
for k=1:13:q
fprintf('%5d',p(k:min(q,k+12))); % 每行输出13个数
fprintf('\n');
end来自:求助得到的回答