写在最前面
本人为初学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
最后,我的程序还有很多需要改进的地方,欢迎大家批评指正,一起交流!