项目一:素数和回文
</pre><pre name="code" class="cpp">/*
* 文件名称:kpii
* 作 者:张宇恒
* 完成日期:2016 年 6 月 2 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:编制2个返回值为int型的函数,用于判断参数是否为素数和回文,调用函数回答以下问题(请包括在一个main()函数中完成,输出时,用明显的提示语,说明正在完成哪个任务。)
* 问题描述:求素数,回文数,回文素数。
* 程序输出:素数,回文数,回文素数
* 问题分析:判断素数,回文数,回文素数
* 算法设计:略
*/
#include<iostream>
using namespace std;
int isprimer(int i)
{
int n=0;
for(int j=1;j<=i;j++)
if(i%j==0)
n++;
if(n==2)
return 1;
else
return 0;
}
int ispalindrome(int n)
{
int t,s,a,b;
if(n<10)
return 1;
if(n<100&&n>9)
{
t=n/10;
s=n%10;
if(t==s)
return 1;
else
return 0;
}
if(n<1000&&n>99)
{
a=n/100;
b=n%10;
if(a==b)
return 1;
else
return 0;
}
}
void main()
{
int n,m,k=0,f,q=0,a[100],b[100];
cin>>n;
cout<<"素数是:"<<endl;
for(int i=1;i<n;i++)
{
m=isprimer(i);
if(m==1)
{
cout<<i<<" ";
cout<<"\t";
b[k]=i;
k++;
if(k%7==0)
cout<<endl;
f=ispalindrome(i);
if(f==1)
{
a[q]=i;
q++;
}
}
}
cout<<endl;
cout<<"回文数是:"<<endl;
int g=0;
for(int j=0;j<n;j++)
{
f=ispalindrome(j);
if(f==1)
{
cout<<j<<" ";
cout<<"\t";
g++;
if(g%7==0)
cout<<endl;
}
}
cout<<endl;
cout<<"回文素数是:"<<endl;
int h=0;
for(i=0;i<q;i++)
{
cout<<a[i]<<" ";
cout<<"\t";
h++;
if(h%7==0)
cout<<endl;
}
cout<<endl;
cout<<"逆素数是:"<<endl;
int e,p,c,d;
for(i=0;i<k;i++)
{
if(b[i]<10)
cout<<b[i]<<"\t";
if(b[i]<100&&b[i]>9)
{
e=b[i]/10;
p=b[i]%10;
c=10*p+e;
for(j=0;j<k;j++)
{
if(c==b[j])
cout<<b[i]<<"\t";
}
}
if(b[i]>99)
{
e=b[i]/100;
p=b[i]/10-10*e;
c=b[i]%10;
d=100*c+10*p+e;
if(isprimer(d)==1)
cout<<b[i]<<"\t";
}
}
}
项目2:最大公约和和最小公倍数
/*
* 文件名称:kpii
* 作 者:张宇恒
* 完成日期:2016 年 6 月 2 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:从键盘中输入两个整数,求这两个整数的最大公约数和最小公倍数,最大公约数采用的算法是辗转相除法(具体算法可用百度)。其中编写自定义函数实现求最大公约数和最小公倍数
* 问题描述:求最大公约数和最小公倍数;
* 程序输出:最大公约数和最小公倍数
* 问题分析:略
* 算法设计:略
*/
#include<iostream>
using namespace std;
int f(int m,int n)
{
int t;
if(m<n)
{
f(n,m);
}
else
{
while(n!=0)
{
t=m%n;
m=n;
n=t;
}
return m;
}
}
void main()
{
int a,b,c,d;
cout<<"输入两个整数a,b:";
cin>>a>>b;
c=f(a,b);
d=a*b/c;
cout<<"最大公约数"<<c<<endl;
cout<<"最小公倍数"<<d<<endl;
}