素数个数

 
 

用 0,1,2,3 \cdots 70,1,2,37 这 88 个数组成的所有整数中,质数有多少个(每个数字必须用到且只能用一次)。

提示:以 00 开始的数字是非法数字。

DFS+ 求素数

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;

bool vis[8];
int sum;

void dfs(int x, int y)
{
	if(y == 0)
	{
		int a = sqrt(x);
		for(int i = 2; i <= a; i++)
		{
			if(x % i == 0)
				return ;
			if(i == a)
				sum += 1;		
		}
		return;
	}
	for(int i = 0; i <= 7; i++)
	{
		if(vis[i] == false)
		{
			vis[i] = true;
			dfs(x * 10 + i, y - 1);
			vis[i] = false;
		}
	}
}

int main()
{
	memset(vis, false, sizeof(vis));
	sum = 0;
	for(int i = 1; i <= 7; i++)
	{
 		vis[i] = true;
 		dfs(i, 7);
 		vis[i] = false;
	}
	cout << sum << endl;
}


猜你喜欢

转载自blog.csdn.net/someone_and_anyone/article/details/79746401
今日推荐