GCD(最大公约数)
**迭代实现**
int Gcd(int a, int b)
{
while(b != 0)
{
int r = b;
b = a % b;
a = r;
}
return a;
}
**递归实现**
int gcd(int a,int b)
{
if(b==0)
return a;
return
gcd(b,a%b);
}
LCM(最小公倍数)
注:ab=GCDLCM
int lcm(int a,int b)
{
return a/gcd(a,b)*b //为避免数据溢出,此处不写a*b/gcd(a,b)
}
素数
**一般判断**
#include<stdio.h>
void main()
{
int i,n;
scanf("%d",&n);
for(i=2;i<n;i++)
if(n%i==0)
break;
if(i<n||n==1)
puts("No");
else
puts("Yes");
}
**打表**
#include<stdio.h>
int n,i,j,a[1000001],p[100000],t=0;
void main()
{
a[0]=a[1]=1;
for(i=2;i<=1000001;i++)
if(a[i])
{
p[t++]=i;
for(j=i+i;j<=n;j+=i) a[j]=1;
}
for(i=0;i<t;i++)
printf("%d%c",p[i],i<t-1?' ':'/n');
}
快速幂:
求大数a^b%m
int result(int a,int b,int m)
{
int d=1,t=a;
while(b)
{
if(b&1)
d=(d*t)%m;
b/=2;
t=(t*t)%m;
}
return d;
}