We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once. For example, 2143 is a 4-digit pandigital and is also prime.
What is the largest n-digit pandigital prime that exists?
#include <iostream> #include <string> using namespace std; int res = 0; bool prim(int a) { for (int i = 2; i*i <= a; i++) { if (a%i == 0) return false; } return true; } void perm(int list[], int n, int k) { int temp1, temp2; if (n == 1) { int sum = 0; for (int i = k; i > 0; i--) sum = sum * 10 + list[i]; if (prim(sum)&&sum > res) res = sum; } else for (int i = 1; i <= n; i++) { temp1 = list[i]; list[i] = list[n]; list[n] = temp1; perm(list, n - 1, k); temp2 = list[i]; list[i] = list[n]; list[n] = temp2; } } int main() { for (int j = 9; j >= 1; j--) { int list[200]; for (int i = 1; i <= j; i++) list[i] = i; perm(list, j, j); } cout << res << endl; system("pause"); return 0; }
时间: 2024-09-29 09:30:09