反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数,编写一个程序,输入一个正整数显示大于该数的前十个反素数
#include<stdio.h>
#include<math.h>
int balance(int a)//判断位数
{
int count = 0;
while (a != 0)
{
a /= 10;
count++;
}
return count;
}
int Isprime(int n)
{
if (n <= 1)
return 1;
else
for (int i = 2; i < n; i++)
{
if (n % i == 0)
{
return 1;//不是素数
}
}
return 2;//是素数
}
//将这个素数倒置
int Fun1(int num)
{
int e_num = 0;
int E_num = 0;
int count = balance(num) - 1;
do
{
int digit = num % 10;
e_num = pow(10, count) * digit;
num /= 10;
E_num += e_num;
count--;
} while (num != 0);
return E_num;
}
int Num(int num)//判断是不是非回文数
{
int Enum = num;
int e_num = 0;
if (Enum == Fun1(num)&&Enum>100)
{
return 1;//不是反素数;
}
else
{
return 2;//可能是反素数;
}
}
int main(void)
{
int num;
printf("请输入一个正整数");
scanf_s("%d", &num);
int num1[10] = {};//存储10个数;
int n = 0;
int i = num;
while (n != 10)
{
int a=Num(num),b= Isprime(num),c=Isprime(Fun1(num));
if (a==2&&b==2&&c==2)
{
num1[n] = i;
n++;
}
num++;
i++;
}
for (int i = 0; i <= 9; i++)
{
printf("%d\t", num1[i]);
}
return 0;
}
这里单纯用的是函数加数组,用指针的话会更加简洁