基础数论算法

  • 最大公约数 
 1 int gcd(int a,int b)
 2 {
 3     int temp;
 4     while(b)
 5     {
 6         temp = b;
 7         b = a%b;
 8         a = b;
 9     }
10 
11 return a; 12 }
  • 最小公倍数
1 int lcm(int a,int b)
2 {
3     return a*b/gcd(a,b);
4 }
  • 素数

    判断n是否为素数

1 bool prime(int n)
2 {
3     for(int i=0; i<=sqrt(n); i++)
4     {
5         if(n%i==0) return false;
6     }
7     return true;
8 }

    判断n以内的素数:素数筛法

 1 void prime()
 2 {
 3     int prime[n+1];
 4     memset(prime,0,sizeof(prime));
 5 
 6     prime[1]=1;
 7     for(int i=2; i<=n; i+=2)
 8         prime[i]=1;
 9 
10     for(int i=3; i<=n; i+=2)
11         for(int j=i; j<=n; j+=i)
12             prime[j]=1;
13 }

 

posted @ 2015-03-05 22:08  流浪集  阅读(152)  评论(0编辑  收藏  举报