`

求质因数只能是2,3,5,7的第n大个数(丑数求解)

阅读更多

题目:求质因数只能是2,3,5,7的第n大个数。例如:1,2,3,4,5,6,7,8,910,12,14,15,16,18

方法一:循环判断每一个数(自然数序列)是否符合丑数的定义,直至第n个数。还有一种思想就是分别求出2,3,5,7指数的范围,然后用多重循环产生每一个数,然后进行排序。

方法二:使用优先队列的方法:每次出最小的一个数,并将这个数分别乘以2,3,5,7的四个数入队,直到出了n个数为止。

方法三:使用四叉树,根节点是1,三个子节点是2,3,5,7,代表对应边的权值,每个子节点又有三个子节点2,3,5,7。如果用完全三叉树,会出现重复路径,比如1->3->2,和1->2->3,实际上是重复的,为了去除重复,对三叉树加上限制条件:2号节点后3个子节点(2,3,5);3号节点有2个子节点(3,5);5号节点有一个子节点(5)。这样就不会出先重复路径了。然后在用Dijkstra算法访问这棵四叉树,当访问完n个节点时就得到了最终结果。

方法四:每一个数都是前面某些数乘以2,3,5,7中最小的一个,用数组存储n个数,然后在用四个指针(数组小标)分别记录当前乘以2,3,5,7数(某些数)的位置,起始的时候指针值都为1,根据当前数的大小修改四个指针的大小,如当前数是20,那么2的指针一定是指向12,3的指针指向7,5的指针指向5,7的指针指向3,然后在利用四个指针计算下一个数,取12*2,7*3,5*5,3*7中最小的一个,最后在根据当前的数的大小,修改相应的指针(每次只需要增加一个指针就行了)。

1
1
分享到:
评论
1 楼 saieuler 2012-09-18  
写的挺详细

相关推荐

    求质因数的软件

    求质因数的软件,非常好用,编码简单!

    2032:例4.18分解质因数

    把一个合数分解成若干个质因数乘积的形式(即求质因数的过程)叫做分解质因数。分解质因数(也称分解素因数)只针对合数。 输入一个正整数n ,将n 分解成质因数乘积的形式。 【输入】 一个正整数n 。 【输出】 分解成...

    C语言求质数[归类].pdf

    C 语言求质数算法设计 本文将介绍两种不同的方法来查找质数,一种是“筛法”,另一种是从 2 到 N 检查每个数字以确定是否为质数。我们将详细介绍第二种方法,并讨论如何优化算法以提高效率。 一、问题分析 要查找...

    分解质因数

    自己写的小程序,可以验证任意正整数是否为质数。 也可以把一个非质数分解质因数。

    C++中采用模版类求质数

    质数是大于1且只有两个正因数(1和自身)的自然数,例如2、3、5、7等。 首先,我们需要理解模板类的概念。模板类是一种泛型编程,它允许我们在编译时创建多个相关的类或函数,这些类或函数可以操作不同类型的数据。...

    Python实现简单求解给定整数的质因数算法示例

    例如,902的质因数有2、3、3和5,因为902 = 2 × 3 × 3 × 5。求解质因数的过程就是找到这些能够整除原始数的质数。 以下是一个简单的Python函数`get_num_factors`,用于计算并返回输入整数的质因数列表: ```...

    深入分析C语言分解质因数的实现方法

    首先来看一个最简单的C语言实现质因数分解的列子: ...把一个合数分解为若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数,分解质因数只针对合数 求一个数分解质因数,要从最小的质数除起,一直除到结

    易语言Eratosthenes筛选法求质数

    接着,从数组的第一个元素2开始,遍历数组,对每个数i,检查它是否已经被标记为合数。如果没有,就将其标记,并遍历i的倍数,将它们标记为合数。这个过程一直持续到遍历到数组的平方根位置,因为大于这个位置的倍数...

    python找出因数与质因数的方法

    ### Python找出因数与质...第一种方法适用于寻找一个数的所有因数,第二种方法则实现了质因数分解。这两种方法都有助于理解和解决与数学运算相关的编程问题。希望这些示例能够帮助你在实际工作中更有效地处理相关问题。

    测试用--质因数程序--c++文件--c语言通用

    第2版质因数程序的代码 PS:呃呃呃呃呃呃呃 第一次发这个东东,不知道为什么要写50以上的子 过1个月就付费!!!! 太难了吖 不过资源是好的 c++资源 如果你是学c语言的把头文件改成 然后把cin改成scanf 把cout改成printf ...

    求文本中指定数字之后指定个数的所有素数

    【标题】"求文本中指定数字之后指定个数的所有素数"所涉及的知识点主要集中在编程、算法和数学上,具体来说,包括以下几个方面: 1. **文本处理**:首先,我们需要从给定的文本中提取出指定的数字。这通常涉及到...

    质因数分解的java小程序练习

    一个简短的java质因数分解的小程序,算法不是很精巧,但是很容易懂

    VB 分解质因数

    一个常见的方法是试除法:从2开始,逐个尝试是否能整除目标数,如果能整除,则将这个因数和剩下的商继续进行同样的操作,直到商变成1为止。以下是这个算法的基本步骤: 1. 设置一个变量`num`为待分解的数,初始化一...

    第四节 质数与合数(2020.05.23) 解析.pdf

    首先,我们了解到有6个正约数的数,其质因数分解可以是ab^2或a^5的形式。例如数12,它可以分解为2^2×3,正好有(2+1)(1+1)=6个正约数。接着,通过构造式p^2+11=(p+1)(p-1)+12,分析了p为质数时(p+1)和(p-1)的性质。...

    求质点的运行轨迹.docx

    ### 求质点的运行轨迹 #### 一、问题重述 1. **问题背景**:本研究探讨一个质点以一定角度θ和初速度v0被抛出的情况,假定质点在空中飞行时不受到空气阻力的影响。 2. **需要解决的问题**:在给定的不同抛射角θ...

    80、第2课 桐桐的数学难题(fen)(2020.02.19)a.pdf

    11. sqrt函数的使用:在某个代码版本中使用了sqrt函数来计算n的平方根,并将结果赋给变量k,这可能是为了优化算法,在求质因数时只检查到平方根为止。 12. 输出格式的控制:在代码中使用了cout语句来格式化输出结果...

    用汇编语言求1000以内的质数

    例如,2、3、5、7等都是质数。求解一定范围内的所有质数是一个经典的算法问题,通常可以通过筛选法(如埃拉托斯特尼筛法)来实现。 ### 汇编代码解析 #### 初始化部分 ```assembly mov si, offset da; 取首地址 ...

    易语言源码易语言Eratosthenes筛选法求质数源码.rar

    易语言源码易语言Eratosthenes筛选法求质数源码.rar 易语言源码易语言Eratosthenes筛选法求质数源码.rar 易语言源码易语言Eratosthenes筛选法求质数源码.rar 易语言源码易语言Eratosthenes筛选法求质数源码.rar ...

    易语言Eratosthenes筛选法求质数源码-易语言

    在给定的标题“易语言Eratosthenes筛选法求质数源码”中,我们可以理解到这是一个关于使用易语言实现Eratosthenes(埃拉托斯特尼)筛选法来寻找质数的程序源代码。Eratosthenes筛选法是一种古老而有效的寻找所有小于...

    for循环求质数

    for 循环,求质数,javascript学习参考代码, 可以供大家学习

Global site tag (gtag.js) - Google Analytics