当前位置:网站首页>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) } }
边栏推荐
猜你喜欢
随机推荐
There may be fields that cannot be serialized in the abnormal object of cdc and sqlserver. Is there anyone who can understand it? Help me to answer
1003 I want to pass (20 points)
Use tf.argmax in Tensorflow to return the index of the maximum value of the tensor along the specified dimension
go-grpc TSL authentication solution transport: authentication handshake failed: x509 certificate relies on ... ...
无服务器+域名也能搭建个人博客?真的,而且很快
小目标检测3_注意力机制_Self-Attention
3.1-分类-概率生成模型
机器学习(三)多项式回归
【C语言】每日一题,求水仙花数,求变种水仙花数
leetcode: 69. Square root of x
1076 Wifi Password (15 points)
查询跟踪快递单号物流,智能分析物流中转有延误的单号
Project 1 - PM2.5 Forecast
4.1 - Support Vector Machines
3.2 - classification - Logistic regression
零基础SQL教程: 基础查询 05
用 Antlr 重构脚本解释器
Evolution and New Choice of Streaming Structured Data Computing Language
Analysys and the Alliance of Small and Medium Banks jointly released the Hainan Digital Economy Index, so stay tuned!
JRS303-Data Verification