質數進階

 avatar
user_6817964
c_cpp
2 years ago
971 B
3
Indexable
#include <stdbool.h> // bool
#include <stdio.h> // printf
int main()
{
	int m;
	scanf_s("%d", &m);
	int n[100], n_old[100], n_new[100];

	for (int k = 0; k < m; k++) {
		scanf_s("%d", &n[k]);
	}
	for (int k = 0; k < m; k++) {
		n_old[k] = n[k];

		/*看是不是質數*/
		bool prime = true;
		for (int i = 2; i * i < n[k]; i++) {
			if (n[k] % i == 0) {
				prime = false; break;
			}
		}

		if (prime) {

			/*反轉*/
			int x = 1;
			int temp;
			n_new[k] = 0;
			while (n[k] != 0) {
				temp = n[k] % 10;
				n_new[k] = (n_new[k] * 10) + temp;
				n[k] /= 10;
			}
			/*看反轉後是不是質數*/
			prime = true;
			for (int i = 2; i * i < n_new[k]; i++) {
				if (n_new[k] % i == 0) {
					prime = false; break;
				}
			}

			if (prime && n_old[k] != n_new[k])
				printf("%d is emirp.\n", n_old[k]);
			else
				printf("%d is prime.\n", n_old[k]);

		}
		else
			printf("%d is not prime.\n", n_old[k]);
	}
}
Editor is loading...