求最大公约数 gcd(m,n) 欧几里得算法(辗转相除法)
#include<cstdio>
//求最大公约数的辗转相除法递归写法
int gcd(int a,int b)
{
if(b==0)
return a;
else return gcd(b,a%b); //递归边界 gcd(a,0)=a;
}
int main()
{
int m,n;
scanf("%d %d",&m,&n);
printf("%d\n",gcd(m,n));
}
求最小公倍数 lcm(a,b)
最大公约数为d,则a,b的最小公倍数为ab/d(为防止溢出,写成a/db)
求素数
bool isPrime(int n){
if(n<=1)
return false;
int sqr = (int)sqrt(1.0*n); //根号n 浮点数取整 添加math.h头文件
for(int i=0;i<=sqr;i++) //遍历2~根号n
{
if(n%i==0)
return false;
}
return true;
}
求解100以内的所有素数
#include<stdio.h>
#include<math.h>
bool isPrime(int n){ //判断n是否为素数
if(n<=1)
return false;
int sqr = (int)sqrt(1.0*n); //根号n 浮点数取整 添加math.h头文件
for(int i=2;i<=sqr;i++) //遍历2~根号n
{
if(n%i==0)
return false;
}
return true;
}
int prime[101],pNum=0; //101是表长 prime数组存放素数,pNum存放素数的个数
bool p[101]={0}; //p[i]为true表示i是素数
void Find_Prime() //获取素数表
{
for(int i=1;i<101;i++)
{
if(isPrime(i)==true)
{
prime[pNum++] = i; //是素数则把i存入prime数组
p[i]=true;
}
}
}
int main()
{
Find_Prime();
for(int i=0;i<pNum;i++)
{
printf("%d ",prime[i]);
}
return 0;
}