您的位置:首页 > 其它

重拾回文素数

2012-12-06 11:00 162 查看
/*
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;

}


运行结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: