首页
学习
活动
专区
圈层
工具
发布

蓝桥杯-质因数个数

蓝桥杯-质因数个数 1、问题描述 2、解题思路 2.1 质数判断 2.2 求取因子 3、完整代码实现 1、问题描述   给定正整数 n, 请问有多少个质数是 n 的约数。...输入格式   输入的第一行包含一个整数 n。 输出格式   输出一个整数, 表示 n 的质数约数个数。 样例输入 396 样例输出 3 样例说明   396 有 2,3,11 三个质数约数。...2.1 质数判断   判断一个数字是否是质数,就是看它的因子是否只有1和它本身。质数的判断我们简单写个函数判断就行,代码如下,遍历的时候不需要从2到n,只需要遍历到n的平方根即可。...,我们在这里找出所有能够被我们输入的数字n整除的数即可,并且可以用一个数组或者集合去收集这些因子,求因子的代码实现如下: 遍历到Math.sqrt(n)即可。...  2、3、11是396的三个质因数。

74720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python3 判断质数以及计算一个数字的质因数

    Python3 初学实践案例(11)判断质数以及计算一个数字的质因数 昨天晚上看到群里有人问如何计算质因数,我想了一下,实现了这个计算质因数的脚本。...举例:10 = 2 * 5; 8 = 2 * 2 * 2; 9 = 3 * 3 好,知道了具体的概念,我们就开始时间代码: 计算一个数字的质因数完整代码 #!...(a)[1:len(str(a))-1].replace(', ','*') print(res) # 主函数 if __name__ == '__main__': print('这是一个计算一个数字的质因数的程序...然后我把计算质因数也改成了这种乘法运算,抛弃了原来的计算平方根的算法。 检查输入是否为数字 在第一步中,我们就需要用户输入一个数字。这里我们使用 python 自带的 input 方法获取用户的输入。...而在替换方面和 js 是差不多的。都是 replace 方法。 计算质因数本身没什么特别的,只是利用了一个数组来存放这个它的质因数。算法比较简单,就不做另外的说明了。

    2.7K30

    Python3 初学实践案例(11)判断质数以及计算一个数字的质因数

    Python3 初学实践案例(11)判断质数以及计算一个数字的质因数 昨天晚上看到群里有人问如何计算质因数,我想了一下,实现了这个计算质因数的脚本。...举例:10 = 2 * 5; 8 = 2 * 2 * 2; 9 = 3 * 3 好,知道了具体的概念,我们就开始时间代码: 计算一个数字的质因数完整代码 #!...(a)[1:len(str(a))-1].replace(', ','*') print(res) # 主函数 if __name__ == '__main__': print('这是一个计算一个数字的质因数的程序...然后我把计算质因数也改成了这种乘法运算,抛弃了原来的计算平方根的算法。 检查输入是否为数字 在第一步中,我们就需要用户输入一个数字。这里我们使用 python 自带的 input 方法获取用户的输入。...而在替换方面和 js 是差不多的。都是 replace 方法。 计算质因数本身没什么特别的,只是利用了一个数组来存放这个它的质因数。算法比较简单,就不做另外的说明了。

    57620

    获取数组中最小的k个数字_29

    思路:利用小根堆 面试或者其他啥情况估计是不允许大家直接用优先级队列的,所以我们还是老老实实的实现一个堆结构吧; 关于堆的结构以及其相应实现大家可以看我之前的一个笔记https://www.jianshu.com.../writer#/notebooks/40413732/notes/55370532 我们这里和普通堆排序和堆数据修改有一点区别,那就是这里我们需要先实现一个小根堆,然后每一次拿第一个数据然后把这个数据删掉...,但是我们这里存在一个问题,数组不太好删数据,删除的话要进行一个所有数据的前移,因此, 我这里取了个巧,我把第一个数字和最后一个数字交换,然后我当这个数组的长度减了1,当最后一个数字不存在,然后会进行一个从顶到下的重建...,同理第二大的数字出来后与倒数第二个交换,当倒数第二个数就不存在了,以此类推。。。...个数实现了(利用大根堆) public ArrayList GetLeastNumbers_Solution(int[] input, int k) { ArrayList

    56710

    golang 中获取字符串个数

    golang 中获取字符串个数 在 golang 中不能直接用 len 函数来统计字符串长度,查看了下源码发现字符串是以 UTF-8 为格式存储的,说明 len 函数是取得包含 byte 的个数 /...(s)) // 13 fmt.Println([]byte(s)) // [72 101 108 108 111 44 32 228 184 150 231 149 140] 既然是以 byte 存储的,...那自然就想到了取 byte 的长度 - bytes.Count() - strings.Count() - 将字符串转换为 []runee 后调用 len 函数 - 使用 utf8.RuneCountInString..."strings" "testing" "unicode/utf8" ) /* 在 golang 中不能直接用 len 函数来统计字符串长度,查看了下源码发现字符串是以 UTF-8 为格式存储的,...说明 len 函数是取得包含 byte 的个数 */ func main() { s := "hello, 世界" fmt.Println(len(s)) // 13 fmt.Println

    3.9K20

    golang 中获取字符串个数

    golang 中获取字符串个数 在 golang 中不能直接用 len 函数来统计字符串长度,查看了下源码发现字符串是以 UTF-8 为格式存储的,说明 len 函数是取得包含 byte 的个数 //...s)) // 13 fmt.Println([]byte(s)) // [72 101 108 108 111 44 32 228 184 150 231 149 140] 既然是以 byte 存储的,...那自然就想到了取 byte 的长度 - bytes.Count() - strings.Count() - 将字符串转换为 []runee 后调用 len 函数 - 使用 utf8.RuneCountInString..."testing" "unicode/utf8" ) /\* 在 golang 中不能直接用 len 函数来统计字符串长度,查看了下源码发现字符串是以 UTF-8 为格式存储的,...说明 len 函数是取得包含 byte 的个数 \*/ func main() { s := "hello, 世界" fmt.Println(len(s)) /

    1.6K81

    Java中获取一个数组的最大值和最小值

    1,首先定义一个数组; //定义数组并初始化 int[] arr=new int[]{12,20,7,-3,0}; 2,将数组的第一个元素设置为最大值或者最小值; int max=arr[0...];//将数组的第一个元素赋给max int min=arr[0];//将数组的第一个元素赋给min 3,然后对数组进行遍历循环,若循环到的元素比最大值还要大,则将这个元素赋值给最大值;同理,若循环到的元素比最小值还要小...,则将这个元素赋值给最小值; for(int i=1;i的第二个元素开始赋值,依次比较 if(arr[i]>max){//如果arr[i]大于最大值...main(String[] args) { //定义数组并初始化 int[] arr=new int[]{12,20,7,-3,0}; int max=arr[0];//将数组的第一个元素赋给...max int min=arr[0];//将数组的第一个元素赋给min for(int i=1;i的第二个元素开始赋值,依次比较

    8.2K20

    求一个数组的最大k个数(java)

    问题描述:求一个数组的最大k个数,如,{1,5,8,9,11,2,3}的最大三个数应该是,8,9,11 问题分析:     1.解法一:最直观的做法是将数组从大到小排序,然后选出其中最大的K个数,但是这样的解法...2.解法二:不对前K个数进行排序,回忆快排的算法中,那个partition函数,就是随机选择数组中的一个数,把比这个数大的数,放在数组的前面,把比这个数小的数放在数组的 后面,这时想如果找出的随机数,最终位置就是...K,那么最大的K个数就找出来了,沿着这个思路思考问题,但是这个函数,最后的索引位置并不一定是K,可能比K大也可能比K小,我们把找出的数组分成两部分sa,sb,sa是大的部分,sb是小的部分,如果sa的长度等于...K中元素的一部分,再从sb中找到,k-m个最大的元素,组合起来就是最终的结果,那么这时把问题简化成从sb中找k-m个最大的元素,所以总体来说这是一个递归的过程,虽然复杂大也是O(n*logn)但是,每一次数据量都会减少所以会更加的快...3.解法三:是利用堆排序,建立一个K阶最大堆,然后数据一个个插入队当中,那么插入队的时间复杂度是O(logK),适合数据量比较大的时候,用堆的效果更加好。

    1.1K20
    领券