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 最小公倍数
int lcm(int a,int b)
{
return a/gcd(a,b)*a;
}
素数:
一般判断:
#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()
{
scanf("%d",&n);
a[1]=0;
for(i=2;i<=n;i++)
a[i]=1;
for(i=2;i<=n;i++)
if(a[i]){
p[t++]=i;
for(j=i+i;j<=n;j+=i)a[j]=0;
}
for(i=0;i<t;i++)
printf("%d%c",p[i],i<t-1?' ':'/n');
}
快速幂
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;
}
迭代实现:
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 最小公倍数
int lcm(int a,int b)
{
return a/gcd(a,b)*a;
}
素数:
一般判断:
#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()
{
scanf("%d",&n);
a[1]=0;
for(i=2;i<=n;i++)
a[i]=1;
for(i=2;i<=n;i++)
if(a[i]){
p[t++]=i;
for(j=i+i;j<=n;j+=i)a[j]=0;
}
for(i=0;i<t;i++)
printf("%d%c",p[i],i<t-1?' ':'/n');
}
快速幂
int result(int a,int b,int m)
{
int d=1,t=a;
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 最小公倍数
int lcm(int a,int b)
{
return a/gcd(a,b)*a;
}
素数:
一般判断:
#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()
{
scanf("%d",&n);
a[1]=0;
for(i=2;i<=n;i++)
a[i]=1;
for(i=2;i<=n;i++)
if(a[i]){
p[t++]=i;
for(j=i+i;j<=n;j+=i)a[j]=0;
}
for(i=0;i<t;i++)
printf("%d%c",p[i],i<t-1?' ':'/n');
}
快速幂
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;
}
vwhile(b)
{
if(b&1)
d=(d*t)%m;
b/=2;
t=(t*t)%m;
}
return d;
}