Python计算第N个素数

介绍

此脚本计算第 N 个质数。在课程工作中,演示了 Python 类,我对这个主题非常满意,因为它与 C++ 非常相似。我所做的一项优化是跳过对偶数的检查。根据定义,偶数永远不可能是质数,因为它们总是能被 2 整除。

什么是质数?质数是大于 1 且只能被 1 或其本身整除的数字。数字 2 是质数,因为它大于 1 并且只能被 2 整除。出于同样的原因,3、5 和 7 也是质数。

使用代码

若要使用该代码,请创建一个具有所需第 N个质数的对象。计算质数的基本思想是从 2 循环到数字 1。该脚本使用外部循环和内部循环来实现此目的。外循环计算已发现多少个素数,并在发现第 N 个素数时退出。内部循环由两个数字初始化。第一个数字是“”,表示要检查是否为素数的数字。第二个数字是从 2 到素数减 1 的计数器。为了测试素数,第二个计数器是模数除以第一个计数器。如果有余数,则该数字是素数的候选数,计数器将增加,然后重新检查。如果没有余数,则该数字不是素数的候选者。当一个数字被拒绝时,第一个优化会脱离内部循环。第二个优化确保只测试奇数。CPrimei

例如:

<span style="color:black"><span style="background-color:#fbedbb"><span style="color:#008000"><em>#</em></span><span style="color:#008000"><em> Calculate the 10th prime number</em></span>
MyPrime = CPrime(10)
<span style="color:blue">print</span>(MyPrime.GetPrime())</span></span>

整个脚本:

<span style="color:black"><span style="background-color:#fbedbb"><span style="color:purple">"""</span><span style="color:purple">
This script calculates a prime number
"""</span>

<span style="color:#008000"><em>#</em></span><span style="color:#008000"><em> Base class</em></span>
<span style="color:blue">class</span> CCalculate:
    <span style="color:blue">def</span> __init__(self):
        <span style="color:blue">pass</span>

    <span style="color:blue">def</span> IsEven(self, num):
        <span style="color:blue">if</span> num % 2 == 0:
            <span style="color:blue">return</span> <span style="color:blue">True</span>
        <span style="color:blue">return</span> <span style="color:blue">False</span>

<span style="color:#008000"><em>#</em></span><span style="color:#008000"><em> Derived class</em></span>
<span style="color:blue">class</span> CPrime(CCalculate):
    <span style="color:blue">def</span> __init__(self, nthPrime):
        self.nthPrime = nthPrime

    <span style="color:#008000"><em>#</em></span><span style="color:#008000"><em> return the nth Prime number</em></span>
    <span style="color:blue">def</span> GetPrime(self):

        nthPrime = self.nthPrime
        counter = 0
        i = 2

        <span style="color:blue">while</span> counter < nthPrime:
            bPrime = <span style="color:blue">True</span>
            j = 2

            <span style="color:blue">while</span> j < i:
                <span style="color:blue">if</span> i % j == 0:
                    bPrime = <span style="color:blue">False</span>
                    <span style="color:blue">break</span>
                <span style="color:blue">else:</span>
                    j = j + 1
            
            <span style="color:blue">if</span> bPrime <span style="color:blue">is</span> True:
                counter = counter + 1

            <span style="color:#008000"><em>#</em></span><span style="color:#008000"><em> Increase the number</em></span>
            i = i + 1

            <span style="color:#008000"><em>#</em></span><span style="color:#008000"><em> if the next iteration does not finish the loop or</em></span>
            <span style="color:#008000"><em>#</em></span><span style="color:#008000"><em> it is an even number, then increase it to make it odd</em></span>
            <span style="color:blue">if</span> counter < nthPrime <span style="color:blue">and</span> self.IsEven(i) <span style="color:blue">is</span> True:
                i = i + 1

        <span style="color:blue">return</span> i - 1</span></span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值