关闭

C++作业7

109人阅读 评论(0) 收藏 举报

项目一:素数和回文

</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;
}





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2061次
    • 积分:155
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    最新评论