当前位置:网站首页>Getting Started with Kotlin Algorithms Calculating Prime Numbers and Optimization
Getting Started with Kotlin Algorithms Calculating Prime Numbers and Optimization
2022-08-11 08:13:00 【Yi Pangzhou】
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 } /** * Get the prime numbers from the specified interval */ 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]是素数") } /** * Print the prime numbers from the specified interval */ 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 、7so return directly20以内素数 * 这样计算的好处在于避免了传统递归从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) } }
边栏推荐
猜你喜欢
随机推荐
pyqt5实现仪表盘
Keep track of your monthly income and expenses through bookkeeping
Openlayers 聚合图、权重聚合图以及聚合图点击事件
Nuget can't find the package problem
Getting Started with Kotlin Algorithms Calculating Prime Factors
3.2 - classification - Logistic regression
【TA-霜狼_may-《百人计划》】图形3.7.2 command buffer简
Do you know the basic process and use case design method of interface testing?
[C语言] sscanf如何实现sscanf_s?
Kaldi语音识别工具编译问题记录(踩坑记录)
IQUNIX A80 exploring TTC金粉 初体验
go sqlx 包
轻量级网络(一):MobileNet V1,V2, V3系列
对比学习系列(三)-----SimCLR
8、Mip-NeRF
1.2 - error sources
高德能力API
场地预订系统,帮助场馆提高坪效
Redis 只会用缓存?20种妙用让同事直呼牛X(荣耀典藏版)
matplotlib