https://www.luogu.com.cn/problem/P1218

我的ac代码,判断x是不是素数的范围是2~根号x,用递归写的,然后…后来看了题解,原来这就叫DFS,菜鸡落泪,在完全不会DFS的情况下写出了DFS…….

#include<iostream>  
#include<cstdlib>  
#include<vector>  
#include<ctime>
#include<algorithm>
#include<cmath>
using namespace std;  

int isPrime(int a){
    if(a == 1){
        return 0;
    }
    if(a == 2 || a == 3){
        return 1;
    }
    int num = sqrt(a);
    for (int i = 2; i <= num;i++){
        if(a % i == 0){
            return 0;
        }
    }
    return 1;
}

void func2(int num, int n){
    if((num > pow(10,n-1)) && (num < pow(10,n) - 1)){
        cout << num << endl;
        return;
    }
    else{
        num *= 10;
        for (int i = 1; i < 10; i += 2){
            if(isPrime(num + i)){
                func2(num + i, n);
            }            
        }
    }
    
    return;
}

int func(int n){
    func2(2, n);
    func2(3, n);
    func2(5, n);
    func2(7, n);
    return 1;
}



int main(){
    int n;
    cin >> n;
    func(n);

    return 0;
}