当前位置:网站首页>Kotlin算法入门计算质因数
Kotlin算法入门计算质因数
2022-08-11 08:01:00 【易庞宙】
/* 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。 比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。 现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身 */ class QualityFactor { /** * 因为不管怎么计算由于非素数数都可以通过1·9中通过乘计算得出所以除了1和2只需要继续是否可以被2-9整除就可以 * 这一说法利用了提取最小公因式来计算得出 * 当然要避免一个重要问题就是当它是个位数字的时候也就是1 、 2 、 3 、 5 、7的时候直接返回 * 这样计算的好处在于避免了传统递归从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) } fun getQualityFactor(number: Int) { var number = number var out = number.toString() + "=" if (isPrimeNumber(2, number)) out = out + number else { while (number != 1) { for (j in 2..number) { /*如果每一次Number都能整除j则让Number/=j*/ if (number % j == 0) { number /= j /*整除完判断是否是素数这样就避免了最后剩下一个比较大的素数然后还要进行计算重复计算*/ if (number != 1) { out += j.toString() + "x" if (isPrimeNumber(2, number)) { out += number number = 1 } } else out += j break } } } } println(out) } }
边栏推荐
- redis operation
- 几何EX3 功夫牛宣布停售,入门级纯电产品为何总成弃子
- 小目标检测3_注意力机制_Self-Attention
- The growth path of a 40W test engineer with an annual salary, which stage are you in?
- 1003 I want to pass (20 points)
- 软件测试常用工具的用途及优缺点比较(详细)
- 基于微信小程序的租房小程序
- 分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
- 4.1-支持向量机
- 1106 2019 Sequence (15 points)
猜你喜欢
![[C语言] sscanf如何实现sscanf_s?](/img/aa/1060c8fd22b09bd6509f8bc41b316e.png)
[C语言] sscanf如何实现sscanf_s?

1081 检查密码 (15 分)
1.1-回归
3.1-分类-概率生成模型

Redis source code-String: Redis String command, Redis String storage principle, three encoding types of Redis string, Redis String SDS source code analysis, Redis String application scenarios

项目2-年收入判断

CSDN21天学习挑战赛——封装(06)

XXL-JOB 分布式任务调度中心搭建

Find the latest staff salary and the last staff salary changes

1056 Sum of Combinations (15 points)
随机推荐
【415. 字符串相加】
Kaldi语音识别工具编译问题记录(踩坑记录)
剑指offer专项突击版第26天
如何通过 IDEA 数据库管理工具连接 TDengine?
优炫数据库支持多列分区吗?
流式结构化数据计算语言的进化与新选择
少年成就黑客,需要这些技能
jenkins简单使用
囍楽cloud task source code
抽象类和接口
string类接口介绍及应用
C语言操作符详解
装饰器模式:Swift 实现
2022 China Soft Drink Market Insights
1002 Write the number (20 points)
Use tf.argmax in Tensorflow to return the index of the maximum value of the tensor along the specified dimension
项目1-PM2.5预测
记录一些遇见的bug——Lombok和Mapstruct的冲突导致,A component required a bean of type ‘com.XXX.controller.converter.
Serverless + domain name can also build a personal blog? Really, and soon
《剑指offer》题解——week3(持续更新)