zoukankan      html  css  js  c++  java
  • 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;
    }
    


  • 相关阅读:
    mysql存储过程的优点
    MySQL复制
    优化数据库的方法
    MySQL表分区
    Http请求
    memcache和redis的区别
    触发器实现原理
    PHP常见数组函数与实例
    git 打包指定提交过的代码
    发送HTTP请求方法
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7249581.html
Copyright © 2011-2022 走看看