问题及代码:
/*
*Copyright (c) 2014,烟台大学计算机学院
*All rights reserved .
*文件名称:test .cpp
*作 者:曹莉萍
*完成日期:2014 年11月10日
*版 本 号:v1.0
*
*问题描述:根据前几个程序的函数输出1000内各种素数、回文数。
*输入描述:无
*程序输出:输出1000内各种素数、回文数。
*/
#include<iostream>
using namespace std;
int main()
{
bool isPrimer(int n);
bool isPalindrome(int n);
int reverse(int x);
int m;
cout<<"1000以内所有的素数为:";
for (m=1; m<=1000; m++)
{
if (isPrimer(m))
cout << m << " ";
}
cout<<endl<<endl<<"1000以内所有的回文数为:";
for(m=1; m<=1000; m++)
{
if (isPalindrome(m))
cout << m << " ";
}
cout<<endl<<endl<<"1000以内所有的回文素数为:";
for (m=1; m<=1000; m++)
{
if (isPrimer(m))
{
if (isPalindrome(m))
cout << m << " ";
}
}
cout<<endl<<endl<<"10000以内所有的可逆素数为:";
int n;
for (m=1; m<=10000; m++)
{
if (isPrimer(m))
{
n=reverse(m);
if (isPrimer(n))
cout<<m<<" ";
}
}
return 0;
}
bool isPrimer(int n)
{
if(n<2)
return false;
for (int i=2; i*i<=n; i++)
{
if(n % i == 0)
return false;
}
return true;
}
bool isPalindrome(int n)
{
int x = 0, r,o;
o=n;
while (n > 0)
{
r = n % 10;
x = x * 10 + r;
n = n / 10;
}
if (o==x)
return true;
else
return false;
}
int reverse(int n)
{
int m=0,r;
while (n>0)
{
r=n%10;
m=m*10+r;
n=n/10;
}
return m;
}
运行结果