本文共 622 字,大约阅读时间需要 2 分钟。
直接dfs穷举所有的数,然后再判断是不是素数,注意dfs时不同层的剪枝。
代码如下:
/*ID: 15674811LANG: C++TASK: sprime*/#include#include #include #include #include #include using namespace std;int n;bool is_prime(int n){ int k=sqrt(n)+0.5; for(int i=2;i<=k;i++) if(n%i==0) return 0; return 1;}bool prime[1000002];bool check(int n){ if(n<=1000000) { if(prime[n]) return 0; return 1; } return is_prime(n);}ofstream fout("sprime.out");ifstream fin("sprime.in");void dfs(int sum,int cur){ if(cur==n) { if(check(sum)) fout< < >n) { for(int i=2;i<=9;i++) { if(prime[i]) continue; dfs(i,1); } } return 0;}
转载地址:http://akrfb.baihongyu.com/