matlab求1000以内素数
时间: 2023-07-13 17:14:24 浏览: 145
以下是 MATLAB 代码,可以求出 1000 以内的素数:
```matlab
% 初始化变量
n = 1000;
is_prime = true(1, n);
% 剔除 1 和偶数
is_prime(1) = false;
for i = 4:2:n
is_prime(i) = false;
end
% 埃拉托色尼筛法
for i = 3:sqrt(n)
if is_prime(i)
for j = i^2:i:n
is_prime(j) = false;
end
end
end
% 打印素数
fprintf('2 ');
for i = 3:n
if is_prime(i)
fprintf('%d ', i);
end
end
```
运行代码后,会输出 2 到 1000 之间的素数。
相关问题
matlab循环结构求1000以内质数
好的,以下是求1000以内质数的MATLAB代码:
```matlab
for num = 2:1000
isPrime = true; % 假设num是质数
for factor = 2:sqrt(num)
if rem(num, factor) == 0 % 若有因子,则不是质数
isPrime = false;
break;
end
end
if isPrime % 输出质数
fprintf('%d ', num);
end
end
```
该代码使用了两个循环结构,外层循环从2到1000遍历每个数,内层循环判断当前数是否为质数。如果当前数是质数,则输出它。内层循环从2到该数的平方根遍历每个数,判断该数是否为当前数的因子,若是则认为当前数不是质数,退出内层循环。
matlab求10000以内素数
以下是 MATLAB 代码,可以求出 10000 以内的素数:
```matlab
% 求10000以内的素数
n = 10000;
prime = true(1, n);
prime(1) = false;
for i = 2:sqrt(n)
if prime(i)
for j = i^2:i:n
prime(j) = false;
end
end
end
% 输出素数
for i = 1:n
if prime(i)
fprintf('%d ', i);
end
end
```
这段代码先设置一个长度为 n 的布尔向量 prime,用于标记每个数是否为素数。然后从 2 到 sqrt(n) 依次枚举每个数,如果它是素数,则将它的倍数标记为非素数。最后输出所有被标记为素数的数。