MATLAB-使用MATLAB求0-100之间的素数

+素数也叫质数。素数是指在大于1的自然数中,除了1和它本身外,不能被其它自然数整除的数。

常用的求素数的方法有两种

1. 试商判别法                      2. 筛选法

试商判别法 :试商法判别奇数 i 是不是素数(只有唯一素数2,不做试商判别),用数字 j (取 3,4,... ,直到sqrt(i))去试商。若存在某个 j 能整除 i ,说明 i 能被 1 与 i 本身以外的整数 j 整除, i  不是素数。

注:理论上,如果 i 存在一个大于sqrt(i)且小于 i 的因数,则必存在一个与之对应的小于sqrt(i) 且大于 1 的因数,因此从判别功能来说,取到sqrt(i)已足够了。

筛选法求素数:为了方便实施“划去”操作,应设置数组,每一个数组元素对应一个待判别的奇数,并附初值 0 。如果该奇数为P的倍数则应划去,对应元素加一个划去标记,通常给该元素赋值-1. 最后,打印元素值不是-1(既没有划去)的元素对应的奇数即所求素数。在实际应用筛选法的过程中,P通常不限于取不超过sqrt(i)的素数,而是适当放宽取不超过sqrt(i)的奇数(从3开始)。这样做尽管多了一些重复划去的操作,但程序实现比较简单。

两者比较:试商法较为直观,设计容易实现。筛选法在较大整数的判别中,效率更高一些,但设计上较难把握。

 例题:使用MATLAB软件编程求1到100之间的素数,并对所有素数求和。(试商判别法)

0到100之间的素数
235711
1317192329
3137414347
5359616771
7379838997

MATLAB程序源代码 

% CSDN账号:MATLAB码农
clc;
clear all;
sum=5;         %求0~100素数之和
ss=0;          %用来标定是否是素数,0表示不是
prime=[2 3];     %用来存放素数,2,3为素数,先放置在prime矩阵中
for i=4:100
    for j=2:fix(sqrt(i))
        if mod(i,j)==0
            ss=0;     %能被整除,说明i不是素数,用ss=0来表示
            break;    %能被整除,跳出内循环
        else 
            ss=1;
        end
    end
    if ss==1          %是素数,保存至prime矩阵,并求和
        prime=[prime,i];
        sum=sum+i;
    end
end
disp('0到100内的素数为:');
prime
disp('0到100内素数的和为:');
sum

MATLAB程序运行结果 

  • 16
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值