/*项目2:最大公约和和最小公倍数
从键盘中输入两个整数,求这两个整数的最大公约数和最小公倍数,最大公约数采用的算法是辗转相除法
。其中编写自定义函数实现求最大公约数和最小公倍数
由于要返回两个结果,因为通过函数返回最小公倍数,通过引用返回最大公约数
int fun(int m,int n,int &gcd) */
#include <iostream.h>
int fun(int m,int n)
{
int t=m%n;
while(t!=0)
{
m=n;
n=t;
t=m%n;
}
return n;
}
void main ()
{ int x,y,t,z;
cout<<"从键盘中输入两个整数"<<endl;
cin>>x>>y;
t=fun(x,y);
z=(x*y)/t;
cout<<"最大公约数为:"<<t<<endl;
cout<<"最小公倍数为:"<<z<<endl;
}
/*项目3:特殊三位数
请输出满足条件n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。要求用自定义函数实现求阶乘。*/
#include <iostream.h>
int f(int n)
{
int a,b,c,j,m=1,x=1,y=1,z;
a=n/100;
b=b=(n-100*a)/10;
c=n%10;
for( j=1;j<=a;j++)
m=m*j;
for( j=1;j<=b;j++)
x=x*j;
for( j=1;j<=c;j++)
y=y*j;
z=x+y+m;
return z;
}
void main()
{ int i,q;
for ( i=100;i<1000;i++)
{ q=f(i);
if(q==i)
cout<<i;
}
}
#include <iostream>
using namespace std;
void sort(int p[], int n);
bool prime(int x);
void print(int p[],int n);
int main( )
{ int a[10]={2,13,5,47,19,53,27,25,28,11};
int b[10],m,j=0;
for(m=0;m<10;m++)
{
if(prime(a[m]))
b[j++]=a[m];
} cout<<"新的素数数组为";
print(b,j-1);
sort(b,j-1);
cout<<endl;
cout<<"新的排序后的素数数组为";
print(b,j-1);
return 0;
}
void sort(int p[], int n)
{
int i,k,t;
for(i=0;i<n-1;i++)
{
for(k=0;k<n-i-1;k++)
{
if(p[j]>p[j+1])
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}
} bool prime(int x)
{ for(int i=1;i<=x;i++)
if(x%i==0)
{
break; return 1;
}
else return 0;
void print(int p[],int n)
{
for(int i=0;i<n;i++)
cout<<p[i]<<" ";
}