Project Euler:Problem 41 Pandigital prime
Posted blfbuaa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Project Euler:Problem 41 Pandigital prime相关的知识,希望对你有一定的参考价值。
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; }
以上是关于Project Euler:Problem 41 Pandigital prime的主要内容,如果未能解决你的问题,请参考以下文章
Project Euler:Problem 47 Distinct primes factors
Project Euler:Problem 89 Roman numerals
Project Euler :Problem 54 Poker hands