Algorithm-数论 特殊数
文章平均质量分 58
xiaozhuaixifu
这个作者很懒,什么都没留下…
展开
-
筛选法构造素数表
建立一张2--n的素数表,对于大量判定一个数是否是素数,传统方法效率太低下面建立一张10000以内的素数表,并对任意数进行判定思路:筛掉一个素数pi的倍数的数,剩下的就是素数#include using namespace std;bool flag[10000];int prime[10000];int main(){ memset(flag,0,sizeof(flag)原创 2013-05-24 19:51:27 · 1301 阅读 · 0 评论 -
蒙哥马利快速幂摸算法
快速求幂取摸a^b mod m! 0上代码:#include#include#include #include #include#include#include#includeusing namespace std;int main(){ __int64 a,b,m; int n; cin>>n; while(n--) { cin>>a>>b>>m;原创 2013-05-24 20:10:09 · 1507 阅读 · 0 评论 -
庞果网在线编程---倒水---扩展欧几里得算法
水题一道:#include #include #include #include using namespace std;int gcd(int a,int b){ if(a<b)return gcd(b,a); if(b==0)return a; return gcd(b,a%b); }bool can(int a,int b,int c) {原创 2013-07-10 00:11:21 · 2446 阅读 · 25 评论 -
庞果网-在线编程挑战 幸运数 简单数论.......
#include #include #include #include using原创 2013-06-23 00:27:32 · 2866 阅读 · 7 评论 -
2013腾讯编程马拉松初赛第一场(3月21日) 小明系列故事——师兄帮帮忙 !!快速幂取摸
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4506思路:就是一个大数幂取摸的算法,秒之~#include #include using namespace std;const __int64 modnum=1000000000+7;__int64 n,t,k,x;__int64 re[11000];__int64 fastmod(原创 2013-07-29 14:09:33 · 775 阅读 · 0 评论 -
整数划分问题---动态规划、递归
第一:将一个整数 n 划分为 不超过m 组 的划分数 如 n=4m=3输出:4 { 1+1+2=1+3=2+2=4}思路:使用动态规划: 定义状态: dp[i][j] j的i划分的组数递推:dp[i][j]=dp[i][j-i]+dp[i-1][j] ------当m=n时,变成了常见的整数划分问题#include#includeusing namespace原创 2013-08-06 20:18:02 · 5247 阅读 · 0 评论 -
扩展欧几里得算法---Extended Euclidean algorithm
概述欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:gcd函数就是用来求(a,b)的最大公约数的。gcd函数的基本性质:gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|)公式表述gcd(a,b)=gcd(b,a mod b)证明:a可以表示成a = kb + r,则r原创 2013-08-11 11:01:45 · 2828 阅读 · 0 评论 -
素因子分解 Prime factorization
算术基本定理,又称为正整数的唯一分解定理,即:每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式。例如:,。算术基本定理的内容由两部分构成:分解的存在性:分解的唯一性,即若不考虑排列的顺序,正整数分解为素数乘积的方式是唯一的。第一步:首先用埃氏筛选法构造n以内的素数表,然后再分解:#include #include using namespace原创 2013-08-11 12:49:58 · 5111 阅读 · 0 评论