任务:可逆素数
输入:一个整数n,表示有n位数
输出:n位整数中有多少对可逆素数对
#include<stdio.h>
int Js(int j,int n);
int IsPrime(int k);
int main()
{
int n,i,k,j;
int a,count=0;
int begin=1,end=9;
printf("Please input a number n :");
scanf("%d",&n);
for(i=0;i<n-1;i++) //确定求逆素数的范围
{
begin=begin*10;
end=end*10+9;
}
for(j=begin;j<=end;j++)
{
if(IsPrime(j))
if(Js(j,n))
count++;
}
printf("%d",count/2);
return 0;
}
int IsPrime(int k) //判断是否为素数
{
int i;
for(i=2;i<k;i++)
{
if(k%i==0)
return 0;
}
return 1;
}
int Js(int j,int n) //求他的逆序数是否为素数
{
int num=0,i=0;
for(i=0;i<n;i++)
{
num=num*10+j%10;
j=j/10;
}
if(IsPrime(num))
return 1;
}