题目描述
枚举
C++ 代码
#include <bits/stdc++.h>
using namespace std;
int n;
int odd[10] = {1,2,3,5,7,9}; // 0-5
bool primes(int n)
{
if(n==1) return false;
for(int i = 2 ; i <= n/i ; i++)
if(n%i==0) return false;
return true;
}
void dfs(int u , int len , int num) // u 是 当前长度
{
if(u!=0)
if(!primes(num)) return;
if( u==len )
{
cout << num << endl;
return ;
}
if(u==0){
for(int i = 0 ; i <= 5 ; i++)
{
num = odd[i];
dfs(u+1 , len , num);
}
}
else{
for(int i = 0 ; i <= 5 ; i++)
{
num = num*10 + odd[i];
dfs(u+1 , len , num);
num /= 10;
}
}
}
int main()
{
cin >> n; //用 质数枚举 长度 为 n 的 所有数字
dfs(0,n,0);
return 0;
}