一、项目2:最大公约和和最小公倍数
从键盘中输入两个整数,求这两个整数的最大公约数和最小公倍数,最大公约数采用的算法是辗转相除法(具体算法可用百度)。其中编写自定义函数实现求最大公约数和最小公倍数
#include<iostream.h>
int bei; //定义全局变量:最小公倍数
int fun(int m,int n,int a) //计算函数
{
int y;
y=m%n;
while(y) //碾转相除法求最大公约数
{
m=n;
n=y;
y=m%n;
}
bei=a/n; //最小公倍数=两数之积/最大公约数
return n; //返回最大公约数
}
void main()
{
int m,n,yue;
cout<<"请输入两个整数:";
cin>>m>>n;
yue=fun(m,n,m*n); //取最大公约数
cout<<"最大公约数是"<<yue<<",最小公倍数是"<<bei<<endl;
}
二、
项目3:特殊三位数
请输出满足条件n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。要求用自定义函数实现求阶乘。
#include<iostream.h>
int jiecheng(int n) //阶乘函数
{
int i,m=1;
for(i=n;i>0;i--) //循环阶乘
m*=i;
return m; //返回阶乘值
}
void main()
{
int i,a,b,c;
cout<<"该特殊三位数有:";
for(i=100;i<1000;i++)
{
a=(i/10)/10; //百、十、个位分离
b=(i/10)%10;
c=i%10;
if(jiecheng(a)+jiecheng(b)+jiecheng(c)==i) //判断是否相等并输出
cout<<i<<'\t';
}
cout<<endl;
}