反素數(逆向拼寫的素數)是指一個将其逆向拼寫後也是一個素數的非回文數,編寫一個程式,輸入一個正整數顯示大于該數的前十個反素數
#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;
}
這裡單純用的是函數加數組,用指針的話會更加簡潔