Problem 7 :
By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
What is the 10001st prime number?
思路 :
我们首先列举出一些有用的条件:
- 1不是素数。
- 素数中除了2是偶数以外,其他的素数都是奇数。
- 任何一个数字 只能有一个大于 的素因子。
- 对任意的数 进行素性测试的结果是:如果我们找不到小于或等于 的数整除 ,则为素数: 的唯一素因子是 本身。
好的,以上的条件让我们对求解素数有了一个理性的认识,那么接下来直接上代码。
代码 :
clc;clear all;close all
tic %Measurement program run time
i = 1;
n = 2;
while i<10001
n = n+1;
x = 3;
if mod(n,2) == 0
n = n + 1;
end
while x <= sqrt(n)
if mod(n,x) == 0
break
end
x = x + 2;
end
if x > sqrt(n)
i = i + 1;
end
end
toc
fprintf('The answer is %.0d\n',n)
结果 :104743
小结 :
代码中用了一个测试程序运行时间的函数:
代码块
这个组合很经典,而且用法也比较简单。
还有在matlab中注释尽量用英语,matlab对中文的兼容性不好,下次打开程序时可能中文显示乱码。本来英语就不好,好要英文注释,不可能!
开始的时候我一直是用中文进行注释,然而下次打开的时候看注释就是这个样子----------------%????????,
what?这是个啥嘛?辛辛苦苦打上去的注释呢?你快回来,我一人承受不来。
面对这个问题,我也颇为不快,那能怎么办,那就去改变,尝试过。但是问题还是得不到解决好吧!既然改变不了外界环境,那我只能改变自我了!其实这跟英文水平没多大关系,要自信,相信我,没错的!因为你只要自己看的懂就行,顺便练习一下英文喽,一举两得,何乐而不为呢!希望大家多多交流,与君共勉!