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


  • 相关阅读:
    常见正则总结
    word 操作教程
    word调整技巧
    关于如何自定义handler
    html 处理
    iis 导入和导出配置——iis管理
    前端学习
    动态添加js的方法
    jquery学习笔记
    php学习笔记
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7249581.html
Copyright © 2011-2022 走看看