isprime(Q)返回的是一个逻bai辑数组du 数组Q中相应位置zhi为dao素数版的位置为1,其他位置为0。你是刚学matlab吧,语法权都有问题。function Z=sushu(Q)Z=Q(isprime(Q));end这么写就求出你要的数组中的全部素数了。追问恩恩 刚学几天 isprime不是只能判定一个数是不是素数吗? 为什么直接这样就可以了? 你这个我试过了 是对的 但是我不是很理解 能解释下吗?追答学matlab你要学会从矩阵的角度考虑问题这种logical数据格式的用法在matlab中很常用的,效率高。原理很简单的,程序运行的时候你单步走查看下过程就明白了。举例比如你的矩阵是Q=[1 2 3 4 5 6]isprime(Q)将得到一个3*2的logical矩阵[0 1 1 0 1 0]相当于你标记了原矩阵中的素数www.mh456.com防采集。
%%?判断素数matlab有自带的函数isprime%下面这些语句是取出A矩阵中所有的素数clearclcA?=?3:2:17;index?=?isprime(A);B?=?A(index)结果:A?=?????3?????5?????7?????9????11????13????15????17B?=?????3?????5?????7????11????13????17
prime(200); 直接得到小于200的所有素数。 如果一定要用循环,那么用factor函数 j = 1; for i = 1:200 temp = factor(i); if numel(temp)
function X=sushu(Y)X=zeros(size(Y));for i = 1:length(Y) %这里你是用原来的Y的长度[a,b]=min(Y);j=2;while j<=a if rem(i,j)==0 break; X(i)=[] Y(b)=[] %这里你又减少了Y的长度,当然有问题啊啦 这是一个在编程中不小心就犯错误 end if i==j X(i)=a Y(b)=[] %这里你也减少了Y的长度 j=j+1;endendend改也很简单,最上面的for循环用while代替
首先prime函数没用上,可以删除,只有一个小问题:x=input('输入数字'); if (x==1||x==2) y='素数'; elseif( x>2) k=2; if (mod(x,k)==0) y='不是素数' end end disp(y) 现在可以了,只需要输入数字回车即可
内容来自www.mh456.com请勿采集。