天天看點

C語言練習題3(反素數)

反素數(逆向拼寫的素數)是指一個将其逆向拼寫後也是一個素數的非回文數,編寫一個程式,輸入一個正整數顯示大于該數的前十個反素數

#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;
}
           

這裡單純用的是函數加數組,用指針的話會更加簡潔

繼續閱讀