MATLAB--190813--欧拉计划(七)

写在最前面
本人为初学MATLAB的小菜鸟,本博客作为阶段学习的一个小练习,欢迎大家与我交流!
每周一句
有时候,跌到谷底并不是一件坏事,可能在这个过程中你会意识到自己的不足,前进方向上的偏差,挺过去,你就会发现自己可以变得更好,加油!
题目七
在这里插入图片描述
题目的意思就是求出第10001个素数。
思路
1.在之前的博客中提及过,f=isprime(x)这个函数可以用于判断一个数是不是素数。这就为书写程序带来很大的方便。判断、累加,一直找到10001个素数为止。
2.假如不知道有这个函数,怎么去做?肯定要编写一个判断素数的函数。利用rem(x,y)整除函数可以判断出是否为素数,如果是素数a=1,否则a=0。同样通过不断累加,找到第10001个素数。当然,要注意运算的速度,n从2-sqrt(t)可以最大程度上减小运算量。
代码块
方法一

%利用f=isprime(t)函数判断一个数是不是素数
disp('求第10001个素数是多少:')
clear;
i=1;
t=2;
while(i<=10001)
    if(isprime(t)==1)
       i=i+1;
    end
    t=t+1;
end
t=t-1;
fprintf('第10001个素数为:%d\n',t);

方法二

%利用常规方法判断一个数是不是素数
%定义一个判断素数的函数
disp('求第10001个素数是多少:')
clear;
i=3;
t=4;
while(i<=10001)
for n=2:sqrt(t)  %为了减少计算机的计算量,将值从2设置到sqrt(t)
    if(rem(t,n)==0)
        a=0;
        break;   %%循环语句,当运行到此处,退出所在循环层,到达fprintf处!
    else
        n=n+1;
        a=1;     %加上a=1可以覆盖之前的a=0,这一步一定要考虑到!
    end
end
t=t+1;
     if(a==1)    %是素数,n重新从2开始
        i=i+1;
        n=2;      
     end
end
t=t-1;
fprintf('输出的结果为:%d\n',t);

结果
第10001个素数为:104743
最后,我的程序还有很多需要改进的地方,欢迎大家批评指正,一起交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

摸鱼王子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值