matlab数组中素数,用matlab定义一个函数,这个函数可以取出一个数组中所有的素数...

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请勿采集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值