当前位置:网站首页>Kotlin算法入门计算素数以及优化
Kotlin算法入门计算素数以及优化
2022-08-11 08:01:00 【易庞宙】
class GetprimeNumber { /* * 获取[1,n]区间素数*/ fun forEachNumberGetprime(number: Int): List<Int> { val integers = ArrayList<Int>() for (i in 1 until number) if (isPrimeNumber(2, i)) integers.add(i) return integers } /** * 获取从指定区间的素数 */ fun forEachNumberGetprimeToSpecifiedPosition(startPosition: Int, endPosition: Int): List<Int> { val integers = ArrayList<Int>() for (i in startPosition until endPosition) if (isPrimeNumber(2, i)) integers.add(i) return integers } /** * 打印从1到N的素数 */ fun forEachPrintNumberGetprime(number: Int) { for (i in 1 until number) if (isPrimeNumber(2, i)) println("number = [$i]是素数") } /** * 打印从指定区间的素数 */ fun forEachPrintNumberGetprimeToSpecifiedPosition(startPosition: Int, endPosition: Int) { for (i in startPosition until endPosition) if (isPrimeNumber(2, i)) println("number = [$i]是素数") } /** * 因为不管怎么计算由于非素数数都可以通过1·9中通过乘计算得出所以除了1和2只需要继续是否可以被2-9整除就可以 * 这一说法利用了提取最小公因式来计算得出 * 当然要避免一个重要问题就是当它是个位数字的时候也就是1 、 2 、 3 、 5 、7的时候所以直接返回20以内素数 * 这样计算的好处在于避免了传统递归从1到n的反复计算更加高效的计算出素数面对千位以上的数据使用 * 也避免了过多使用这一算法(冗余重复性计算)的:判断素数的方法:用一个数分别去除2到sqrt(这个数的平方根),如果能被整除, 则表明此数不是素数,反之是素数这一种算法更加快捷 * 避免了重复计算的冗余 */ fun isPrimeNumber(divisor: Int, number: Int): Boolean { if (number % divisor == 0) return false else if (number == 1 || number == 2 || number == 3 || number == 5 || number == 7 || number == 11 || number == 13 || number == 17 || number == 19) return true else if (number <= 20) return false else if (divisor == 9) { return isPrimeNumber(11, divisor) } else if (divisor > 9) { return if (divisor < Math.sqrt(number.toDouble())) { isPrimeNumber(divisor + 1, number) } else if (divisor.toDouble() == Math.sqrt(number.toDouble())) false else true } return isPrimeNumber(divisor + 1, number) } }
边栏推荐
猜你喜欢
随机推荐
C Primer Plus(6) 中文版 第1章 初识C语言 1.6 语言标准
AcWing 272. 最长公共上升子序列
pyqt5实现仪表盘
Four states of Activity
leetcode: 69. Square root of x
1091 N-Defensive Number (15 points)
Use tf.argmax in Tensorflow to return the index of the maximum value of the tensor along the specified dimension
Find the latest staff salary and the last staff salary changes
4.1ROS运行管理/launch文件
如何通过开源数据库管理工具 DBeaver 连接 TDengine
【C语言】每日一题,求水仙花数,求变种水仙花数
软件测试常用工具的用途及优缺点比较(详细)
Analysys and the Alliance of Small and Medium Banks jointly released the Hainan Digital Economy Index, so stay tuned!
记录一些遇见的bug——Lombok和Mapstruct的冲突导致,A component required a bean of type ‘com.XXX.controller.converter.
Pico neo3 Unity Packaging Settings
1.2-误差来源
C语言-结构体
《剑指offer》题解——week3(持续更新)
About # SQL problem: how to set the following data by commas into multiple lines, in the form of column display
Interaction of Pico neo3 in Unity