算法 c c++-求最大公约数和判断素数的最优算法

问题描述

求最大公约数和判断素数的最优算法
要求时间限制在1s之内的,测试数据最大到10的5次方,算法思想或者程序代码(C++或c)

解决方案

判断素数只需要把除数从2变到n的平方根就行了,最大公约数也就一样了

时间: 2024-02-19 10:55:31

算法 c c++-求最大公约数和判断素数的最优算法的相关文章

Python实现求最大公约数及判断素数的方法

  本文实例讲述了Python实现求最大公约数及判断素数的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 #!/usr/bin/env python def showMaxFactor(num): count = num / 2 while count > 1: if num % count == 0: print 'largest factor of %d is %d' % (num, count) break #break跳出时会跳出

辗转相除法_欧几里得算法_java的实现(求最大公约数)

辗转相除法,又被称为欧几里德(Euclidean)算法, 是求最大公约数的算法. 当然也可以求最小公倍数. 算法描述 两个数a,b的最大公约数记为GCD(a,b).a,b的最大公约数是两个数的公共素因子的乘积.如462可以分解成2 × 3 × 7 × 11:1071可以分解成3 × 3 × 7 × 17.462和1071的最大公约数等于它们共有的素因数的乘积3 × 7 = 21.如果两数没有公共的素因数,那么它们的最大公约数是1,也即这两个数互素,即GCD(a,b)=1.另g=GCD(a,b),

冒泡排序算法 递归算法,求n的阶乘 求最大公约数和最小公倍数 java分解质因数

   1.  /**     2.  * 冒泡排序算法     3.  */      4. public class BubbleSort {      5.     public static void sort(int[] values) {      6.         int temp;      7.         for (int i = 0; i < values.length; ++i) {      8.             for (int j = 0; j <

C#求最大公约数

最大公约数既能被两个整数整除的最大整数,例如,24与15两个数的最大公约数为3.求最大公约数可以求余法实现.即用两个数中最大的数除以最小的数求余,然后使用除数除以余数求余,直到余数为0时,之前的除数也就是两个数的最大公约数.计算最大公约数的算法如下: public float maxGongYueShu(int n1,int n2){ int temp = Math.Max(n1, n2); n2 = Math.Min(n1, n2);//n2中存放两个数中最小的 n1 = temp;//n1中

javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号

 具体题目是这样的: 从1--9中选取N个数字,组成不重复的N位数,从小到大进行编号,当输入其中任何一个数M时,能找出该数字对应 的编号.如 N=3,M=213. 输出:[123(1) , 132(2) , 213(3) , 231(4) , 312(5) , 321(6)]--->X=2 首先看到题目想到的是生成一个从少到大的全排列的数组,然后再遍历数组得到对应的序号(数组下标加1),又或者想到一个个从小到大的生成push进数组,然后判断该数是不是当前题目给的数,如果是的话要求的序号就是当前数

更相损减法和辗转相除法 求最大公约数和最小公倍数(C语言)

假设有两个数a和b,求a,b的最大公约数和最小公倍数实际上是一个问题,得出这两个数的最大公约数就可以算出它们的最小公倍数. 最小公倍数的公式是 a*b/m m为最大公约数 因为 a=m*i; b=m*j; 最小公倍数为 m*i*j 那么,下面就开始计算a和b的最大公约数. 更相损减法: <九章算術·方田>作分數約簡時,提到求最大公因數方法:反覆把兩數的較大者減去較小者,直至兩數相等,這數就是最大公因數.這方法除了把除法換作減法外,與輾轉相除法完全相同.例如書中求91和49的最大公因數: 91

Java求最大公约数与最小公倍数

 如果数a能被数b整除,a就叫做b的倍数,b就叫做作a的约数.约数和倍数都表示一个数与另一个数的关系,不能单独存在.如只能说16是某数的倍数,2是某数的约数,而不能孤立地说16是倍数,2是约数. "倍"与"倍数"是不同的两个概念,"倍"是指两个数相除的商,它可以是整数.小数或者分数."倍数"只是在数的整除范围内,相对于"约数"而言的一个数字概念,表示的是能被某一个自然数整除的数,它必须是一个自然数. (1)

判断素数的时间复杂度最小的算法

问题描述 判断素数的时间复杂度最小的算法 在10的7次方内的数判断是否素数,什么算法时间复杂度最小?求详解..希望各位大神说的浅显一点,本人菜鸟~ 解决方案 算法时间复杂度算法时间复杂度计算如何计算算法的时间复杂度 解决方案二: http://bbs.csdn.net/topics/290068251

c语言-C语言用函数求最大公约数和最小公倍数,看不出错在哪,代码如下

问题描述 C语言用函数求最大公约数和最小公倍数,看不出错在哪,代码如下 #include int maxnumber(int x,int y) { int a=0; a=x%y; while(a!=0) { a=x%y; x=y; y=a; } return y; } int minnumber(int x,int y) { int z; z=(x*y)/maxnumber(x,y); return z; } void main() { int maxnumber(int x,int y); i