永发信息网

MATLAB中求素数,这个程序有一点不明白,请帮我看看,谢谢~~~

答案:2  悬赏:0  手机版
解决时间 2021-03-03 14:13
  • 提问者网友:我是女神我骄傲
  • 2021-03-02 18:17
clear
n=100%input('n=');
prime=[2];k=0;
for i=3:n
for m=2:fix(sqrt(i)) 请问这一步怎样理解??为甚么要开方取整??
if mod(i,m)==0 这个又是什么意思呢??
k=1;
break;
else
k=0;
end
end
if k==0
prime=[prime [i]]; 这里我也不是很明白
end
end
prime
sum(prime)

非常感谢,谢谢~~~
最佳答案
  • 五星知识达人网友:詩光轨車
  • 2021-03-02 18:45
for m=2:fix(sqrt(i)) 是取2到i的平方根的数,
mod(i,m)==0 如果i除以m的余数为零(也即处了1和i本身外还有其他的约数,也就不是素数)则令k=1;
k是用来指出i是不是素数,k=0表示i是素数

prime=[prime [i]];
是往数组里添加新算出的素数,比如初始的prime=[2],计算出素数3以后,由上面的语句,可使prime=[2 3],一直循环,最后prime里便是100以内的全部素数。

至于这个平方根也可以不用,将for m=2:fix(sqrt(i))换成 for m=2:i-1得到的结果是相同的。
全部回答
  • 1楼网友:上分大魔王
  • 2021-03-02 20:13
isprime(n); 如果n是素数,返回1 如果n是合数,返回0。 真是那你没办法,既然有你就用嘛!!! 不过算你幸运,这难不倒我。 function b=prime(n) a=ceil(sqrt(n)); b=1; for i=2:a if mod(n,i)==0 b=0; break; end end 这只是一个简单的,对于1,2,负数,复数,分数等情况没有考虑,你可以根据实际情况修改。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯