关闭

C++实验7-素数和回文

169人阅读 评论(0) 收藏 举报
分类:

一、问题及代码


/*  
* 文件名称: homework.cpp 
* 作    者:  万绍良 
* 完成日期: 2016  年 6 月 1 日  
* 版 本 号:v1.0  
* 对任务及求解方法的描述部分: 使用函数及循环结构应对素数和回文;
* 输入描述: 无;
* 问题描述: 找出200以内的素数、回文数、回文素数、可逆素数;
* 程序输出: 200以内的素数、回文数、回文素数、可逆素数;
* 问题分析: 了解如何找出素数和回文;
* 算法设计: 使用函数和循环;
*/
#include<iostream.h>
int isPrimer(int n)//判断是否为素数
{
	int a,b=1;
	for(a=2;a<n;a++)
		if(n%a==0)
		{
			b=0;
			break;
		}
	return b;
}
int isPalindrome(int n) //判断是否为回文
{	
	int m=n,h=0,t=1;
	while(m!=0)	
	{			
			h=h*10+m%10;
			m=m/10;	
	}
	if(h!=n)
		t=0;
	return t;
}
int main()
{
	int i,j=0,m=0,n=0,k=0,p,r;
	int a[80],b[80],c[80],d[80];
	for(i=2;i<300;i++)
	{
		if(isPrimer(i))//素数
		{
			a[j]=i;
			j++;			
			r=i;
			p=0;
			while(r!=0)
			{
				p=p*10+r%10;
				r=r/10;
			}
			if(isPrimer(p))//可逆素数
			{
				d[k++]=i;
			}
		}		
		if(isPalindrome(i))//回文数
		{
			b[m++]=i;
		}
		if(isPrimer(i) && isPalindrome(i))//回文素数
		{
			c[n++]=i;
		}		
	}
	cout<<"300以内的所有素数有:"<<endl;
	for(i=0;i<j;i++)
	{
		cout<<a[i]<<"\t";
		if((i+1)%6==0)
			cout<<endl;
	}
	cout<<endl<<"300以内的所有回文数有:"<<endl;
	for(i=0;i<m;i++)
	{
		cout<<b[i]<<"\t";
		if((i+1)%6==0)
			cout<<endl;
	}
	cout<<endl<<"300以内的所有回文素数有:"<<endl;
	for(i=0;i<n;i++)
	{
		cout<<c[i]<<"\t";
		if((i+1)%6==0)
			cout<<endl;
	}
	cout<<endl<<"300以内的所有可逆素数有:"<<endl;
	for(i=0;i<k;i++)
	{
		cout<<d[i]<<"\t";
		if((i+1)%6==0)
			cout<<endl;
	}
	cout<<endl;
	return 0;
}




二、运行结果




三、心得体会


在使用自己定义的函数时,需要认真检查是否正确;

如果程序很长而又在编译时出错,可以一部分一部分注释掉来检查错误,这样才能更有效率地改正自己的代码。


四、知识点总结


在编写这个程序的过程中很好地学到了如何将一个数倒过来,这是一种非常有用的办法,在应对回文及可逆方面非常实用,可以背下来日后备用。

0
0

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