第1个回答 2010-05-18
#include <iostream>
#include <cmath>
bool prime(int n)
{
int j;
double k=sqrt((double)n);
for(j=2;j<=k;j++)
if(n%j==0)
break;
return j>k;
}
int renum(int n)
{
int i=1000,t=0;
while(n)
{
t+=n%10*i;
n/=10;
i/=10;
}
return t;
}
int main()
{
for(int i=1000;i<10000;i++)
if(prime(i)&&prime(renum(i)))
std::cout<<i<<' ';
}
第2个回答 2010-05-18
//求四位的可逆素数。可逆素数指:一个素数将其各位数字的顺序倒过来构成的反序数也是素
#include<stdio.h>
bool fun(int n)
{
int i=1000,num=0;
while (n)//数字倒转
{
num+=(n%10)*i;
n/=10;
i/=10;
}
for (i=2;i<num;i++)//检测是否为素数
if (num%i==0)
break;
if (i==num)
return true;
else
return false;
}
void main()
{
int i,n,num=1;
for (i=1000;i<10000;i++)
{
for (n=2;n<i;n++)//检测是否为素数
if (i%n==0)
break;
if (i==n&&fun(i))//调用函数fun
{
printf("%6d",i);
if ((num++)%10==0)
printf("\n");
}
}
}