项目2:最大公约和和最小公倍数
从键盘中输入两个整数,求这两个整数的最大公约数和最小公倍数,最大公约数采用的算法是辗转相除法(具体算法可用百度)。其中编写自定义函数实现求最大公约数和最小公倍数
#include <iostream>
using namespace std;
int M(int a,int b)
{
int min, max;
max=a>b?a:b;
min=a<b?a:b;
if(max%min==0)
return min;
else
return M(min,max%min);
}
int N(int a,int b)
{
int min, max,x,y;
if(max%min==0)
return max;
while(max%min!=0)
{
x=max%min;
max=min;
min=x;
}
y=max*min/M(a,b);
return 0;
}
int main()
{
int a,b,min, max,x,y,m;
cout<<"输入两个整数:";
cin>>a>>b;
cout<<"这两个整数的最大公约数为:"<<M(a,b)<<endl;
cout<<"这两个整数的最小公倍数为:"<<y<<endl;
return 0;
}
项目4:数组素数排序
定义一个有10个的数组a,将数组a中的所有素数放在数组b,再对数组b排序。
#include<iostream>
using namespace std;
bool prime(int n)
{
int i,n;
for(i=2;i<n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
void sort(int a[],int j)
{
int i,m,k;
for(i=0;i<j-1;i++)
{
for(k=0;k<j-i-1;k++)
if(a[k]>a[k+1])
{
m=a[k];
a[k]=a[k+1];
a[k+1]=m;
}
}
}
void print(int b[],int j)
{
int i;
cout<<"b=";
for(i=0;i<j;i++)
cout<<b[i]<<" ";
}
int main()
{
int a[10]={2,13,5,47,19,53,27,23,28,11};
int b[10];
int i,j=0;
for(i=0;i<10;i++)
if(prime(a[i])==1)
{
b[j]=a[i];
j++;
}
print(b,j);
sort(b,j);
print(b,j);
return 0;
}