看过《最强大脑》的小伙伴应该都知道珠心算。尤其是在中国队对阵日本队时,那种紧张的气氛婉如世纪大战一触即发。对于大多数和我一样的普通小老百姓而言就只剩下感叹的份了。
所谓的珠心算其实就是“珠算”和“心算”的结合体。一个庞大的数字在瞬间就能分辨是否是质数,这种计算量要是让我来,怎么也得废上好几本笔记本了。在电影《异次元杀阵》中也用到了质数判断来作为阻拦主角一行人的难题,没看过的可以去补补哦。
那么作为一个码农我今天要讲解的是如何使用代码来瞬间完成大数字的质数判断。代码部分其实很简单,如果没兴趣了解原理的话直接跳到最后看代码就可以了。
根据这个特点可以把这个数(n)依次除以2 ~ (n-1)。这样就可以判断数字n是否是质数。但是这种办法显得异常的蠢,它的时间复杂度为O(n)。
根据这个特点可以在上述方法上进行改进,在依次除以2 ~ (n-1)之前加上一个非偶数判断就能减少一半的工作量。
所谓的珠心算其实就是“珠算”和“心算”的结合体。一个庞大的数字在瞬间就能分辨是否是质数,这种计算量要是让我来,怎么也得废上好几本笔记本了。在电影《异次元杀阵》中也用到了质数判断来作为阻拦主角一行人的难题,没看过的可以去补补哦。
那么作为一个码农我今天要讲解的是如何使用代码来瞬间完成大数字的质数判断。代码部分其实很简单,如果没兴趣了解原理的话直接跳到最后看代码就可以了。
一、什么是质数
质数就是只能被1和本身除尽的数。根据这个特点可以把这个数(n)依次除以2 ~ (n-1)。这样就可以判断数字n是否是质数。但是这种办法显得异常的蠢,它的时间复杂度为O(n)。
二、列举偶数质数
在偶数当中只有2符合质数的特点,所以偶数中也只有一个质数2。根据这个特点可以在上述方法上进行改进,在依次除以2 ~ (n-1)之前加上一个非偶数判断就能减少一半的工作量。