数学上的一些算法
来源:互联网 发布:淘宝小二旺旺标志 编辑:程序博客网 时间:2024/04/28 13:08
1.求两个数的最大公约数
可以使用辗转相除法,实现简单,效率高。
int gcd(int a, int b){while (b != 0){int t = a%b;a = b;b = t;}return a;}
假设r是a,b的最大公约数,则有(a,b)=(b,r),这就是原理。
2.求素数(质数)的算法
第一种暴力解法,时间复杂度:O(n^2)
#include<iostream>using namespace std;#define MAX 1000void main(){int i, j;cout << "输出 "<<MAX<<" 以内的素数" << endl;cout <<MAX<<" 内的素数为" << endl;for (i = 1; i <= MAX; i++){for (j = 2; j<i; j++){if (i%j == 0)break;}if (i == j)cout << " " << i;}}
第二种筛法求素数,时间复杂度O(nlg(lgn)),接近线性
void FilterPrime(int n){bool* isPrimes = new bool[n + 1];for (int i = 2; i <= n; ++i){isPrimes[i] = true;}//创建一个与传入N 相同 大小的bool型数组isPrimes[2] = true;for (int j = 2; j <= n; ++j){if (isPrimes[j] == true){for (int m = 2; j*m <= n; ++m){isPrimes[j*m] = false;}//这里 j会从2~n j*m 的数就不是素数 把对应的数组的数组 去掉}}for (int k = 2; k <= n; ++k){if (isPrimes[k] == true){cout << k << " ";}}delete[] isPrimes;}
0 0
- 数学上的一些算法
- oj中用到的一些数学上的算法
- C一些常用的数学小算法
- 数学上一些结论
- 一些数学算法
- 数学上的一些小技巧韩信点兵的问题
- [Paper Test 1]一些数学的小型算法题
- 最重要的一些算法 (数学与计算机领域)
- 关于算法上的一些问题
- 数学的一些起源
- 一些数学符号的读音
- 学数学的一些建议
- 一些有趣的数学问题
- 一些常用的数学符号
- 数学方面的一些书籍
- 数学建模的一些思考
- 关于数学的一些观点
- 一些面试时候用的上的算法 复习一下
- 红米是个失败,雷军是个笨蛋
- sprak large scale
- 细思极恐!未来百万人将下岗十大职业将消失
- project euler 23
- PAT 1005 继续(3n+1)猜想(详解)
- 数学上的一些算法
- 数据结构与算法(线性表_链式存储结构)
- python 调用 C 动态库
- 在 Golang 中使用 Protobuf
- project euler 24
- Hadoop 问题java.lang.IllegalArgumentException Wrong FS: hdfs://192.168
- LeetCode(2)Add Two Numbers
- 多少块土地
- PAT甲级1006