算法

【算法】普通方法和筛选法求素数

素数指的是因子只有1和本身的数(1不是素数),求解素数在数学上应用非常广泛,而求解n以内的素数也是我们编程时常遇到的问题,在这个问题上,筛选法求解素数运行得非常快。下面首先介绍如何判断一个是不是素数,然后介绍用普通方法求n以内的素数,接着是筛选法求n以内的素数,最后是两种算法的运行时间比较 判断一个数是不是素数 算法思想:判断小于等于一个数的平方的所有大于1的整数是不是能整除这个数,如果能,则表明这个数不是素数;反之,则是素数。 //判断一个数是否为素数 bool isPlain(int value){ int m = sqrt(value); if (value < 2) return false; for (int

  • zgljl2012
3 min read
算法

常用算法思想

1. 分治法 将复杂问题分解成两个或多个子问题,再将子问题又分为两个或多个更小的子问题……直到到达了有解的基本问题。最后,将子问题的解合并成原文题的解。如排序算法、傅里叶变换等。 2. 动态规划 每次决策依赖于当前的状态,然后会引起状态的转移。一个决策序列就是在变化的状态中产生出来的,这种多阶段最优化决策解决问题的过程就称之为动态规划。如最短路径等。 3. 贪心算法 求解问题时,不考虑全局情况,只贪心于当前的最好的解,所做出的仅仅是某种意义上局部最优解。如Prim算法等。 4. 回溯算法 回溯算法实际上是一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回到上一步,尝试别的路径。如八皇后问题。

  • zgljl2012
2 min read
zgljl2012@gmail.com