有大神能帮忙看一下代码吗?
查看原帖
有大神能帮忙看一下代码吗?
657502
Wangfeiyang楼主2023/12/30 09:21
#include<bits/stdc++.h>
using namespace std;
const int N = 1e8 + 10;
int a[25];
int vis[N];
int n, k, ans = 0;

void init() { // 埃氏筛
	for(int i = 1; i <= N; i ++) vis[i] = 1;
	vis[0] = vis[1] = 0;
	int m = sqrt(N) + 0.5;
	for(int i = 2; i <= m; i ++) {
		if(vis[i]) {
			for(int j = i * i; j <= N; j += i) {
				vis[j] = 0;
			}
		}
	}
}

void dfs(int s, int m, int sum) {
	if(m == k) {
		if(vis[sum] = 1) ans ++;
		return;
	} else {
		for(int i = s; i < n; i ++) {
			dfs(i + 1, m + 1, sum + a[i]);
		} return;
	}
}

int main() {
	cin >> n >> k;
	for(int i = 1; i <= n; i ++) {
		cin >> a[i];
	}
	init();
	dfs(0, 0, 0);
	cout << ans << endl;	
	return 0;
}
2023/12/30 09:21
加载中...