MyException - 我的异常网
当前位置:我的异常网» 编程 » 判断一个数跟这个数逆置过来是否为素数

判断一个数跟这个数逆置过来是否为素数

www.myexceptions.net  网友分享于:2013-04-10  浏览:8次
判断一个数和这个数逆置过来是否为素数

内容:判断一个数和这个数逆置过来是否为素数

目的:掌握各种循环及素数的判断方法

程序代码:

/*   
* 程序的版权和版本声明部分:   
* Copyright (c) 2013, 烟台大学计算机学院   
* All rights reserved.   
* 文件名称:test.cpp   
* 作    者:匡效国   
* 完成日期:2013 年 4 月 08 日   
* 版 本 号:v1.0   
*  
* 对任务及求解方法的描述部分:   
* 输入描述:输入多组数据n(|n|<10000),输入为0或|n|>=10000时结束
* 问题描述:判断输入的数和其逆置过来的数是否为素数,
*		    如果全是,则输出"True",否则输出"False"
* 程序输出:见下图   
* 问题分析:略 
* 算法设计:略   
*/    
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	int n,a,b,c,d,m,i,n1;
	while(cin>>n)//使用while循环输入
	{
		if(n==0||(fabs(n)>=10000))//如果n=0,则终止循环
			break;
		else
		{
			if(n<=1)//如果n<=1,很明显不可能是素数,输出False
				cout<<"False"<<endl;
			else//如果n>1,则判断这个数是否为素数
			{
				bool prime1,prime2;//定义两个Bool变量,prime1,prime2
				prime1=true;//令prime1为真
				prime2=true;//令prime2为真
				m=sqrt(n);//进行素数的判断
				for(i=2;i<=m;i++)
				{
					if(n%i==0)//如果n%i为0,说明其不是素数,使prime1值为假并终止循环
					{
						prime1=false;
						break;
					}
				}
				if(prime1==false)//如果prime1为假,说明其不是素数,输出False
					cout<<"False"<<endl;
				else if(n>1&&n<10)//如果n为个位数,则其逆置过来是其本身,也为素数,输出True
					cout<<"True"<<endl;
				else//然后进行逆置过来数的判断
				{
					if(n>10&&n<100)//n为两位数时,求出n1
					{
						a=n%10;
						b=(n-a)/10;
						n1=10*a+b;
					}
					else if(n>100&&n<1000)//n为三位数时,求出n1
					{
						a=n%10;
						c=(n-a)/100;
						b=(n-a-100*c)/10;
						n1=100*a+10*b+c;
					}
					else if(n>1000&&n<10000)//n为四位数时,求出n1
					{
						a=n%10;
						d=(n-1)/1000;
						c=(n-a-1000*d)/100;
						b=(n-a-1000*d-100*c)/10;
						n1=1000*a+100*b+10*c+d;
					}
					m=sqrt(n1);//再次对n1进行素数的判断
					for(i=2;i<=m;i++)
					{
						if(n1%i==0)
						{
							prime2=false;
							break;
						}
					}
					if(prime2==false)//如果prime2为假,说明n1不为素数
						cout<<"False"<<endl;
					else//此处prime1和prime2同时为真,输出True
						cout<<"True"<<endl;
				}
			}
		}
	}
	return 0;
}

运行结果:

感悟:做的题目多了,循环使用起来也自然就顺手了

 

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有