- 最大公约数
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 }