数论小知识
2012-11-15 15:19
155 查看
判断一个数是否为奇数
求两个数的最大公约数
求m个数的最小公倍数
求一个数的因子个数
矩阵乘法
#include<iostream> using namespace std; int main() { if(3&1)cout<<"yes1"<<endl; if(4&1)cout<<"yes2"<<endl; return 0; }
求两个数的最大公约数
int gcd(int a,int b) { if(b==0) return a; return gcd(b,a%b); }
求m个数的最小公倍数
#include<iostream>
using namespace std;
int gcd(int a,int b) { if(b==0) return a; return gcd(b,a%b); }
int main()
{
int m,t,p=1;
cin>>m;
while(m--)
{
cin>>t;
p=p/gcd(p,t)*t;//两个数的最小公倍数=两数的乘积/两数的最大公约数
//此处若写成(p*t)/gcd(p,t)其中p*t的值可能会溢出
}
cout<<p<<endl;
}
求一个数的因子个数
//以100以内的数为例,求每个数的因子个数 #include<cstdio> #include<cstring> using namespace std; const int M=101; int main() { int i,t,num[M]; memset(num,0,sizeof(num));//起始时置零 for(i=1;i<M;i++) { num[i]++;//每个数是其本身的因子 t=i+i;//t表示i的倍数 while(t<M) { num[t]++;//若i的倍数为t则i必为t的因子 t+=i; } } for(i=1;i<M;i++) printf("%d ",num[i]); return 0; }
矩阵乘法
typedef struct Node { int m[11][11]; }Matrix; Matrix Mul( Matrix a, Matrix b ) //矩阵乘法 { Matrix c; for( int i=0; i<n; ++ i ) { for( int j=0; j<n; ++ j ) { c.m[i][j]=0; //特别注意 for( int k=0; k<n; ++ k ) { c.m[i][j] += a.m[i][k]*b.m[k][j]; } } } return c; }
相关文章推荐
- Codeforces Round #382 (Div. 2)D. Taxes(数论知识)
- hdu 1664 Different Digits (bfs+取余判重+数论知识)
- 康复计划#2 常用基础数论知识杂烩
- 数论知识
- 数论常用小知识总结
- 数论相关知识
- 学OI你需要知道的数论知识
- bzoj 1951 [Sdoi2010]古代猪文(数论知识)
- 数论知识整理
- 与密码学有关的数论知识
- 数论day1 —— 基础知识(们)
- 数论中的基础知识
- 数论 知识概念梳理
- 数论知识总结——史诗大作(这是一个flag)
- poj 2154 polya定理+数论知识
- 一些数论知识(不定期更新)
- 数论知识总结-莫比乌斯反演
- 数论 算法 不定方程 欧几里得 同余定理 相关知识
- 模运算相关数论知识
- 数论小知识更新ING