`
wangfeiaini
  • 浏览: 54807 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

几个简单的算法

阅读更多
1.求最大公约数的欧里几德算法:
/**
 * 欧力几德
 * @param m
 * @param n
 * @return
 */
 private static int oula(int m,int n){
 if(n==0)return m;
 int r=m%n;
 if(r==0){
 return n;
 }else{
 m = n;
 n = r;
 return oula(m, n);
 }
 }
 2.求最大公约数的联系整数检查法
/**
	 * 连续整数检查法
	 *
	 * @param m
	 * @param n
	 * @return
	 */
	public static int gcd(int m,int n){
		int r = Math.min(m, n);
		for(;r>0;r--){
			if(m%r==0&&n%r==0){
				return r;
			}
		}
		return 0;
	}
 return 0;
 }
 3.z质数判断:
/**
 * 质数判断
 * @param n
 * @return
 */
 public static boolean isPrime(int n){
 boolean flag = true;
 if(n==1) return false;
 if(n==2) return flag;
 for (int i = 2; i<= n/2; i+=2){
     if(n%i == 0){
     flag = false;
         break;
     }
 }
 return flag;
 }
 4.斐波那契额数列三种求解:
public static long m1(int n){
		if(n>1){
			long result = 1;
			do{
				result += m1(n-2);
				n--;
			}while(n>1);
			return result;
		}
		return n;
	}
	
	public static long m2(int n){
		if(n>1){
			long a=0,b=1;
			do{
				long tmp = b;
				b += a;
				a = tmp;
			}while(--n>1);
			return b;
		}
		return n;
	}
	
	public static long m3(int n){
		if(n>1){
			long a,b=1;
			n--;
			a = n&1;
			n /= 2;
			while(n-->0){
				a += b;
				b += a;
			}
			return b;
		}
		return n;
	}
 5.求阶乘的两种算法:
public static Integer F(int n){
 if(n==0)return 1;
 if(n<=2&&;n>=1)return n;
 return F(n-1)*n;
 }
 //计算大数
 public static BigInteger combination(int n){
		if(n==0)return new BigInteger("1");
		if(n<=2&&n>=1)return new BigInteger(n+"");
		int i=3;
		BigInteger b = new BigInteger("0");
		BigInteger tmp = new BigInteger("2");
		while(i<=n){
			b = tmp.multiply(new BigInteger(i+""));
			tmp = b;
			i++;
		}
		return b;
	}
 6.附加一个算法计算题,求大神解答:
 
/**
小a和小b起初分别有A块钱和B块钱,它们决定玩一个游戏,游戏规则是扔一个硬币,如果结果是正面的话,小a要给小b C块钱。
否则是反面的话,小b给小a D块钱。
它们不断地扔硬币,直到某一次应该给钱的人拿不出那么多钱,就认为他破产输掉了。
硬币不是均匀的,它以p1的概率产生正面,1 - p1的概率产生反面。
请问小a最后胜利(也就是说小b破产输掉)的概率有多大?
输入:A,B,C,D是整数,0&lt;=A,B&lt;50,0&lt;=C,D&lt;= 100,p1是浮点数 0&lt;=p1&lt;=1;
输出:为保证输出的是整数,请输出小a获胜的概率乘以100后再下取整(直接截断后面的位数)的结果。
例如,结果是0.125则输出12
*/

 

分享到:
评论

相关推荐

    常用的几种简单算法,很简单的

    在编程领域,算法是解决问题的关键,本篇将讨论一些常见的简单算法,它们广泛应用于各种计算任务。以下是一些在C++编程中常用的数学函数和算法的详细解释: 1. **cmath库中的数学函数**: - `abs`: 计算一个数的...

    几个简单的排序算法

    本压缩包包含的资源专注于几个常见的排序算法,以及一个额外的获取最大子数组算法和优先队列算法。下面我们将详细探讨这些算法及其应用。 首先,让我们来讨论排序算法。排序算法有很多种类,每种都有其独特的特性和...

    几种简单算法的C语言源代码和演示页面(插入排序,冒泡排序等).zip

    在本压缩包中,我们主要关注的是几种简单的算法,它们都是用C语言编写的,并且配合有HTML动画演示,帮助理解和学习。以下是这些算法的详细解释: 1. 插入排序(Insertion Sort) 插入排序是一种基础且直观的排序...

    算法设计<几个基本的算法>

    从给定的文件信息来看,标题“算法设计&lt;几个基本的算法&gt;”和描述“好不容易整理出来的 与大家一起分享了 大家踊跃下载把”,以及标签“算法 数据结构”,表明这是一个关于算法和数据结构的主题,可能包含了一些基础...

    十几个经典算法研究(编程学习)

    本文将基于"十几个经典算法研究(编程学习)"的主题,深入探讨这些算法的原理、应用及其对编程学习的重要性。 首先,算法是解决特定问题的一系列步骤,它可以是简单的算术运算,也可以是复杂的计算过程。在编程中,...

    几个推荐算法的java实现

    - Slope One是一种简单的协同过滤预测算法,它通过计算用户对物品的平均评分差来预测未知评分。具体来说,对于两个物品i和j,slope one会计算已知评分的平均差异,并用这个差异来预测用户对物品j的评分。 - 在Java...

    简单遗传算法实例

    遗传过程包括以下几个步骤: 1. **初始化种群**:随机生成一组初始个体,形成第一代种群。 2. **计算适应度**:对每个个体,根据适应度函数计算其适应度值。 3. **选择操作**:依据适应度值,按照一定的选择策略...

    几个算法的实现和算法作业

    在本压缩包中,我们可以看到一个名为"几个算法实现"的文件,这通常包含了一些常见的算法设计和实现,使用C++编程语言编写,并且带有注释。这些算法是计算机科学和信息技术领域的基础,对于理解和解决各种计算问题至...

    常见的几个加密算法

    本文将详细介绍标题和描述中提到的几个常见的加密算法,并结合标签“MD5”,“ROOT13”和“异或”来深入讨论。 首先,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,设计用于产生一个128位(16字节...

    几个智能算法的MATLAB源代码

    7. **哈密顿环路**:在图论中,哈密顿环路是指一个从某个顶点出发,经过图中所有其他顶点且最终回到起点的简单路径。寻找哈密顿环路是一个NP完全问题,可以利用各种启发式算法如遗传算法或蚁群算法来寻找近似解。 ...

    几个常用的Java算法

    本篇主要探讨几个在Java中常见的算法,这些算法在实际开发中有着广泛的应用。 1. **排序算法**:Java中实现排序有多种方式,如冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序等。其中,冒泡排序和选择...

    k-means算法的一个简单实现

    在本文中,我们将深入探讨k-means算法的基本原理、实现过程以及一个简单的源码实例。 一、k-means算法概述 k-means算法的目标是将数据集分为k个不同的簇(cluster),每个簇内的数据点尽可能相似,而不同簇之间的...

    一个简单的prim算法的实现

    在分析和实现Prim算法时,需要注意以下几点: 1. 初始化:正确设置初始状态,例如选择一个顶点作为起点,并确保所有其他顶点与树的连接权重都被正确记录。 2. 更新机制:在每一轮迭代中,确保能有效地更新到当前最小...

    C#实现最短路径算法

    这里我们将探讨几种常见的最短路径算法,并且会提及如何用C#来实现它们。 1. **Dijkstra算法**:由艾兹格·迪科斯彻提出的Dijkstra算法是最常用的解决单源最短路径问题的方法。它通过维护一个优先队列(通常是二叉...

    几个排序算法

    在给定的压缩包文件中,包含了几种不同的排序算法实现,包括基数排序(Radix Sort)、快速排序(Quick Sort)、随机化快速排序(Randomized Quick Sort)、计数排序(Counting Sort)以及插入排序(Insertion Sort)...

    三边交换简单算法_三边交换法求解哈密顿回路_三边交换算法_liesj7_

    文件"三边交换简单算法"可能包含了关于如何实现这种算法的详细步骤、代码示例,或者是对该算法的进一步解释。通过阅读和理解这份文件,你可以更好地掌握三边交换法求解哈密顿回路的精髓,并将其应用于实际的图论问题...

    简单的递归算法

    这个数列的前几项是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... #### 三、代码分析与改进 给定的Java代码实现了一个特殊的递归算法来生成斐波那契数列的前n项,但其实现方式并非标准的递归,而是采用了循环结构。下...

    简单的算法举例(csdn)————程序.pdf

    本文通过几个简单的算法示例来阐述算法的设计和实现。 首先,我们来看【例2.1.1】,这是一个求1×2×3×4×5乘积的问题。原始方法是逐个相乘,虽然能得到正确结果,但效率低下。改进的算法利用了循环结构,设置两个...

    对比了GWO灰狼优化算法和PSO粒子群优化算法,对比十几个目标函数,GWO性能优于PSO

    本文将深入探讨这两种算法,并基于对十几个目标函数的比较,分析GWO相对于PSO的优势。 首先,让我们理解一下这两种算法的基本原理。PSO算法受到鸟群和鱼群的行为启发,每个粒子代表可能的解决方案,它们在搜索空间...

    10个简单的java算法

    1.求n个数的最小公倍数。...给一个不多于5位的正整数,求是几位数,并逆序打印各个数字8.排序9.杨辉三角10.n个人围成圈,顺序排号,从第一个人开始报数,1-3,到3则退出圈子,问最后剩下的是第几号。

Global site tag (gtag.js) - Google Analytics