題目:計算連續素數的結合為n的組合有多少種。
分析:數論,數據結構。先打好素數表,然後順序掃描即可,類似維護一個隊列。
說明:╮(╯▽╰)╭。
#include <stdio.h>
#include <string.h>
int visit[10010];
int prime[10010];
int main()
{
memset(visit, 0, sizeof(visit));
int count = 0;
for (int i = 2; i < 10010; ++ i)
if (!visit[i]) {
prime[count ++] = i;
for (int j = i+i ; j < 10010; j += i)
visit[j] = 1;
}
int n;
while (~scanf("%d",&n) && n) {
int l = 0, ans = 0, sum = 0;
for (int r = 0; n >= prime[r]; ++ r) {
sum += prime[r];
while (sum > n)
sum -= prime[l ++];
if (sum == n)
ans ++;
}
printf("%d\n",ans);
}
return 0;
}

本文介绍了一种计算连续素数组合为特定整数n的方法,涉及到数论和数据结构的应用。通过构建素数表并使用队列进行顺序扫描,实现高效计算。实例演示了如何将连续素数相加得到目标整数n的不同组合。

423

被折叠的 条评论
为什么被折叠?



