/*
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;
}
运行结果: