重拾回文素数

/*              
 Copyright (c) 2012, 烟台大学计算机学院              
 All rights reserved.              
 文件名称:test.cpp              
 作者:孙永             
 完成日期:2012 年12月6日              
 版本号:v1.0                           
 输入描述:无              
 问题描述:调用函数输出1000以内的回文素数              
 程序输出:1000以内的回文素数   
 问题分析:             
 算法设计:略              
*/   

#include <iostream>  
#include<cmath>  
using namespace std;   
bool isPrime(int n);  //n是素数,返回true,否则返回false  
bool isPalindrome(int n); //n是回文数,返回true,否则返回false  
int reverseNum(int n);  //返回n的逆序数   
int main()  
{
	int n;
	cout<<"万以内的素数有:"<<endl;
	for(n=2;n<10000;++n)
	{
	if(isPrime(n))
		cout<<n<<" ";
	
	}

cout<<endl;
cout<<"万以内的回文数有:"<<endl;
for(n=2;n<10000;++n)
{
	if(isPalindrome(n))
		cout<<n<<" ";
}
cout<<endl;
cout<<"万以内的回文素数有"<<endl;
for(n=2;n<10000;++n)
{
	if(isPrime(n)&&isPalindrome(n))
cout<<n<<" ";
}
cout<<endl;
cout<<"万以内的所有可逆数"<<endl;
for(n=2;n<10000;++n)
{
	if(isPrime(n)&&isPrime(reverseNum(n)))
		cout<<n<<" ";
}

return 0;

}
bool isPrime(int m)
{
bool prime=true;
int k=int(sqrt(m));
for(int i=2;i<=k;++i)
{
if(m%i==0)
{
prime=false;
break;
}

}
return prime;
}//求素数
bool isPalindrome(int m)
{
bool Palindrome=false;
int n,k;
n=m;
k=0;
while(n>0)
{
k=k*10+n%10;
n=n/10;
}
if(k==m)
Palindrome=true;
return Palindrome;

}//求回文数
int reverseNum(int m)
{
int k;
k=0;
while(m>0)
{
k=k*10+m%10;
m=m/10;

}
return k;

}


运行结果:

 

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值