当前位置:网站首页>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) } }
边栏推荐
- Two startup methods and differences of Service
- leetcode:69. x 的平方根
- Find the latest staff salary and the last staff salary changes
- 【Day_13 0509】▲跳石板
- Test cases are hard?Just have a hand
- Keep track of your monthly income and expenses through bookkeeping
- The easiest trick to support quick renaming of various files
- Four operations in TF
- 8、Mip-NeRF
- Use tf.argmax in Tensorflow to return the index of the maximum value of the tensor along the specified dimension
猜你喜欢
4.1 - Support Vector Machines

FPGA 20个例程篇:11.USB2.0接收并回复CRC16位校验

3.2-分类-Logistic回归

经典论文-MobileNet V1论文及实践

Analysys and the Alliance of Small and Medium Banks jointly released the Hainan Digital Economy Index, so stay tuned!

C Primer Plus(6) 中文版 第1章 初识C语言 1.7 使用C语言的7个步骤

Active users of mobile banking grew rapidly in June, hitting a half-year high

1051 复数乘法 (15 分)

测试用例很难?有手就行

leetcode:69. x 的平方根
随机推荐
【C语言】每日一题,求水仙花数,求变种水仙花数
分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
Interaction of Pico neo3 in Unity
零基础SQL教程: 主键、外键和索引 04
零基础SQL教程: 基础查询 05
FPGA 20个例程篇:11.USB2.0接收并回复CRC16位校验
兼容并蓄广纳百川,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang复合容器类型的声明和使用EP04
2022 China Soft Drink Market Insights
少年成就黑客,需要这些技能
1051 Multiplication of Complex Numbers (15 points)
美术2.4 UV原理基础
JUC并发编程
借问变量何处存,牧童笑称用指针,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang类型指针(Pointer)的使用EP05
Active users of mobile banking grew rapidly in June, hitting a half-year high
1036 跟奥巴马一起编程 (15 分)
Mysql JSON对象和JSON数组查询
你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06
1076 Wifi Password (15 points)
1046 划拳 (15 分)
1106 2019 Sequence (15 points)