欧拉计划问题七matlab实现

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是偶数以外,其他的素数都是奇数。
  • 任何一个数字 \large n 只能有一个大于\large \sqrt{n} 的素因子。
  • 对任意的数 \large n 进行素性测试的结果是:如果我们找不到小于或等于\large n 的数整除 \large n ,则\large n为素数:\large n 的唯一素因子是 \large n 本身。

好的,以上的条件让我们对求解素数有了一个理性的认识,那么接下来直接上代码。

代码 :

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

小结 :

代码中用了一个测试程序运行时间的函数:

\large tic

代码块

\large toc

这个组合很经典,而且用法也比较简单。

还有在matlab中注释尽量用英语,matlab对中文的兼容性不好,下次打开程序时可能中文显示乱码。本来英语就不好,好要英文注释,不可能!

                                                            

开始的时候我一直是用中文进行注释,然而下次打开的时候看注释就是这个样子----------------%????????,

what?这是个啥嘛?辛辛苦苦打上去的注释呢?你快回来,我一人承受不来。

                                                  

面对这个问题,我也颇为不快,那能怎么办,那就去改变,尝试过。但是问题还是得不到解决\large \cdot \cdot \cdot \cdot \cdot \cdot好吧!既然改变不了外界环境,那我只能改变自我了!其实这跟英文水平没多大关系,要自信,相信我,没错的!因为你只要自己看的懂就行,顺便练习一下英文喽,一举两得,何乐而不为呢!希望大家多多交流,与君共勉!

猜你喜欢

转载自blog.csdn.net/qq_38910271/article/details/82972733