Day27:质数判定法(Primality Test)

质数(Prime number)

在国中时有学过质数,质数除了1和本身之外,没有其他因数的大於1的自然数。质数的应用很广泛,前几天所提到的公开金钥加密演算法,RSA及Diffie–Hellman Key Exchange就是以质数作为基础。

对於质数的兴趣是起源於「龙纹身的女孩」这一系列的书,里面就有提到女主角莎兰德破解国安局加密後的讯息,其中使用质数加密,当时就去找资料,意外发现这东西太有趣了。找资料的过程中,意外了解「自然界中的质数-周期蝉」。

周期蝉

Wiki中有提到「周期蝉」又被称为十七年蝉或十三年蝉,其生命周期为17年或13年,一生绝大多数时间在地下度过,靠吸食树根的汁液生存。在地下生活十三年或十七年後,同种蝉的若虫同时破土而出,在4-6周内羽化、交配、产卵、死亡,而卵孵化後进入下一个生命周期。因此某一年份在美国东部一些地方每过十七或十三年就会突然出现的大量的蝉,成为一种奇景。

科学家普遍认为的原因是,首先这两个周期都很长,因为周期蝉出现於距今180万年前,那时北美气温低,有时会遇到冷夏,成年蝉需要高温,因此长生命周期可以提高成活率。其次这两个周期都是质数,这样可以避开其他种类的掠食者。如果不是质数,那麽就有更多机会和自己天敌的生命周期相重叠,降低族群数量。

这里有另一篇延伸的周期蝉计算方式:
Evolution of periodicity in periodical cicadas


质数判定法(Primality Test)

质数判定法(Primality Test),是检定一个给定的整数是否为质数的测试。

用Python实现:

def is_prime(number):
    for i in range(2,number):
        if number % i == 0:
            return False
    return True

n = int(input('输入一个正整数:'))

if is_prime(n):
    print('是质数')
else:
    print('不是质数')

用JavaScript实现:

function isPrime(num) {
    let t = parseInt(Math.sqrt(num));
    for (let i = 2; i < t; i++) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

<<:  防毒软件侦测篇

>>:  Day 15 - 演算大法好ㄟ

Vue.js 从零开始:v-if,v-show

条件判断 v-if v-show v-if 与 v-show 的区别 <div id=&quo...

Day 11 实作 create_app

前言 前几天有提到在工厂模式中,我们会用一个函式把全部 app 生起来,今天要实作的就是这个函式,一...

【第七天 - Bubble Sort 题目分析】

先简单回顾一下,今天预计分析的题目: 如何利用 Bubble sort 进行排序? 我们要将下图六个...

[Day17] 强制转型

因 JavaScript 在执行阶段时,型别可不断转换,而这些型别的转换又可分为 明确的强制转型,以...

Day04 - Amazon ECS Anywhere 基础说明与建置(下)

先前将主机已经注册上去了 那接下来就是进到『Task Definitions』开始来建立服务 点选『...